【发布时间】:2018-06-06 00:12:37
【问题描述】:
我正在尝试将 double 转换(并舍入)为 char 数组,而不首先在 double 上使用 std::to_string 进行转换。但是,我收到的是随机记忆文本。我究竟做错了什么?
这是我的代码:
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有什么问题? -
A
double不是char的数组。如果就这么简单,就不需要std::to_string。将浮点值转换为文本字符串涉及大量工作。对于更简单的问题,尝试将int值转换为字符串。一旦你完成了这项工作,你就可以开始考虑浮点转换。或者您可以只使用内置的库设施。上次我写了一个浮点到文本的转换函数,花了好几个星期。这不是初学者的任务。 -
如果
std::to_string如此可恶,也许像sprintf这样的C API 可以满足您的需求? -
您可能会发现不想使用 sprintf 的人对这个问题的回答很有趣。几乎做了一些数学运算来获得幅度,然后通过重复除法一次获得一个数字来表示字符串。 stackoverflow.com/questions/2302969/convert-a-float-to-a-string
标签: c++ string double c-strings