我将尝试将一个双精度浮点数转换为字符数组并进行四舍五入,但是我收到了随机的内存文本。我做错了什么?
这是我的代码:
这是我的代码:
double d = 1.0929998;
d = std::round(d * 100) / 100;
char s[sizeof(d)];
std::memcpy(s,&d,sizeof(d));
结果:
s: q=×£pñ?
预期值:
s:1.09
to_string
有什么问题吗? - Scott Hunterdouble
不是一个char
数组。如果这很简单,就不需要使用std::to_string
了。将浮点数值转换为文本字符串涉及到大量的工作。对于一个比较简单的问题,可以尝试将一个int
值转换为字符串。一旦你成功实现了这个,就可以开始考虑浮点数转换了。或者你可以直接使用内置库设施。上次我编写浮点数到文本转换函数花费了几周时间。这不是初学者的任务。 - Pete Beckerstd::to_string
如此令人厌恶,也许像sprintf
这样的 C API 可以满足您的需求? - ShadowRanger