将双精度转换为字符数组 C

新手上路,请多包涵

我正在尝试将 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ñ?

预期值:

小号: 1.09

原文由 Delrog 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 468
2 个回答

您正在将 double 的文字字节翻译成 char s。 double 值是二进制表示(通常类似于 IEEE 754 ),而 char 是字符的二进制表示(通常基于 ASCII )。这两个不兼容。

不幸的是,这意味着您必须进行某种转换过程。您说不想做的 std::to_string() 或者更复杂的 std::stringbuf (无论如何都会调用 std::to_string()

原文由 tdk001 发布,翻译遵循 CC BY-SA 4.0 许可协议

您正在将 double (数字的二进制表示)复制到 char 数组中;没有理由这些字节应该对应于数字字符。

原文由 Scott Hunter 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题