关于javascript:Node控制台如何显示浮点数

How does the Node console display floating point numbers

本问题已经有最佳答案,请猛点这里访问。

我知道编程语言试图用基数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这样的话,节点存储了什么?
  • 更新:我觉得我的问题不清楚,所以我想举个更好的例子。基10中的0.10.000110011001100110011......。这将在某个时候被切断,我们只需说只存储了0.000110011001100110011。这实际上是以10为基数的0.099999904632568359375。当我们输入0.1时,为什么控制台不打印出0.099999904632568359375。它是如何通过舍入误差返回那个数字的?希望我困惑的根源能得到更多的理解。


    node.js没有显示确切的值。将Number转换为字符串的javascript默认值是使用足够的十进制数字来区分Number值和相邻的可表示值。我不知道node.js使用的是什么方法,但简单地使用javascript的默认值就可以解释这一点。