我知道编程语言试图代表基数为10的基数为2的四舍五入问题。但是当我尝试使用NodeJs控制台时,有些情况让我感到困惑。我知道基数为2的数字不能完全代表基数为10的0.1
。但是当我在控制台中输入0.1
时,它会返回0.1
。起初我以为它只是将数字的表示返回给控制台。但在进一步试验时,0.1 + 0.1
会返回0.2
。所以这是我的问题:
0.2
?0.2 + 0.1
时输入0.3000000000004
之类的内容时,我只会遇到舍入错误?x=0.1
之类的内容时,Node会存储什么? 更新:我认为我的问题并不清楚,所以我想提供一个更好的例子。基数10中的0.1
是0.000110011001100110011......
。这将在某个时刻被切断,并且只能说只存储了0.000110011001100110011
。这实际上是基数10中的0.099999904632568359375
。为什么当我们输入0.099999904632568359375
时,控制台不打印0.1
。如何在舍入误差之后找回该数字?希望我的困惑源更加明白。
答案 0 :(得分:2)
node.js
未向您显示确切的值。 JavaScript Number
转换为字符串的默认值为to use just enough decimal digits to distinguish the Number
value from neighboring representable values。我不知道node.js
使用什么方法,但只使用JavaScript的默认值就可以解释它。