8.00000000000000100000.toFixed(20)如何等于8.00000000000000177636?

时间:2014-06-01 14:36:55

标签: javascript actionscript-3 floating-point

我正在尝试浮点,我遇到了一些奇怪的东西。我做了

8.00000000000000100000.toFixed(20)

在控制台中获得

8.00000000000000177636

这怎么可能?我听到浮点圆,但这似乎并不圆润。是否与toFixed中的字符串转换有关?

1 个答案:

答案 0 :(得分:3)

来自Wikipedia

  

有理数是否具有终止扩展取决于基数。例如,在基数10中,数字1/2具有终止扩展(0.5),而数字1/3不具有(0.333 ......)。在基数2中,只有2的幂(例如1/2或3/16)的分母的有理数终止。具有除2以外的素因子的分母的任何理性都将具有无限的二进制展开。这意味着当以十进制格式写入时,看起来短而精确的数字在转换为二进制浮点时可能需要近似。