【发布时间】:2011-01-18 22:30:48
【问题描述】:
在 C++ 中,您可以使用 std::numeric_limits
编辑:我问的原因是我有一个外部 RNG 生成双打并使用标准输入和输出将它们通过管道传递到第二个程序,所以如果随机生成的数字没有正确输出到标准输出,第二个程序无法通过标准输入获取它们的完整值,因为它们被第一个程序的输出截断,然后被第二个程序舍入为可表示的值。我想完整地在程序之间传递值。 谢谢
【问题讨论】:
-
编辑:部分实际上是一个不同的问题,而且还不错。我建议您单独发布它(以供将来参考)。建议标题:我需要多少个十进制数字才能唯一地表示每个双精度数?
-
我已经想指出,0.0000000000000000000000000001(截断)是介于 0 和 1 之间的有效双精度。事实上,对于 IEEE754,最小的双精度约为 2E-308。这是一长串零。
-
我明白了。那么我最好的选择是管道二进制表示,或者(我 99% 确定我知道这部分的答案)我是否可以使用科学记数法(使用 E)读取数字而不丢失任何数字细节?
标签: c++ floating-point decimal