我尝试转换(并舍入)一个双精度数组为字符数组,而不是先在双精度数组上使用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
发布于 2018-06-06 08:22:51
发布于 2018-06-06 08:17:23
您正在将一个double
(数字的二进制表示形式)复制到char
数组中;这些字节没有理由与数字字符相对应。
发布于 2018-06-06 08:29:07
这并未经过测试,但您可以尝试:
std::string to_string(double x)
{
std::ostringstream ss;
ss << x;
return ss.str();
}
然后,您可以将返回字符串的字符放入char数组中,如下所示:
std::string str = to_string(doubleValue);
char digits[str.length()];
然后,多亏了Remy Lebeau的评论,你可以这样做:
std::strncpy(digits, to_string(doubleValue).c_str(), sizeof(digits))
或者这样:
to_string(doubleValue).copy(digits, sizeof(digits))
https://stackoverflow.com/questions/50710587
复制相似问题