【发布时间】:2015-07-06 23:55:23
【问题描述】:
是否有一种标准方法可以在 C++ 中以十进制格式格式化浮点(或双精度),并具有足够的精度以将其解析回相同的位?
也就是说,我希望1.F 成为"1.0" 和2.002f 成为"2.002"。
对于十进制不精确的情况,可以接受另一种格式(科学或什至十六进制浮点数)。有这种情况吗?
我能找到的只是参考std::fixed 和std::setprecision
such as this link。这些精度是固定的。
谢谢。
【问题讨论】:
-
问得好,我假设您问的是代表denormals and infinity and NaNs的位模式之外的实际标准化数字?
-
我认为这可能会有所帮助:std::numeric_limits::digits10
-
不能将
2.002完全表示为float或double。对于float情况,实际上存储了类似2.0020000934600830078125的内容。 -
另外,您希望如何表示
1e-32这样的数字?如果它不必是人类可读的,我会投票赞成将float的字节转储为十六进制。
标签: c++ floating-point