我知道JavaScript编号是如何在IEEE 754标准中定义的所有64位浮点数,以及执行计算时的结果,如下:
Is floating point math broken?
(以及许多其他问题)
我不明白JavaScript数字是如何以某种方式保持其原始精度的。例如,如果为变量分配值0.1
,则在调试器中查看或输出到控制台时,会报告其具有该值:
const foo = 0.1
console.log(foo); // reports 0.1
但是,0.1
无法表示为双精度浮点数,因此foo
的实际值为0.10000000149011612
。为什么在上面的例子中没有报告?存储了额外的精度信息在哪里?