我理解,对于double
的IEEE表示(或任何二进制表示),我不能用有限的位表示0.1
。
我有两个问题:
double
使用相同的标准时,为什么它不会像JavaScript一样陷入0.1 + 0.2
?console.log(0.1)
?答案 0 :(得分:3)
将浮点数转换为字符串至少有三个合理的选择:
这些都有优点和缺点。选择3转换将得到" 0.3","对"回答,加0.1和0.2的结果。另一方面,读取以这种方式打印的值不能依赖于恢复原始浮点数,因为多个浮点值映射到同一个字符串。
我认为这些选项中的任何一个都不是"对"或"错误"。语言通常具有强制其中一个非默认选项的方法,如果默认值不是特定输出的最佳选择,则应该这样做。
答案 1 :(得分:0)
因为它会将x打印到n个小数位。这恰好是正确的