我正在尝试浮点,我遇到了一些奇怪的东西。我做了
8.00000000000000100000.toFixed(20)
在控制台中获得
8.00000000000000177636
这怎么可能?我听到浮点圆,但这似乎并不圆润。是否与toFixed
中的字符串转换有关?
答案 0 :(得分:3)
来自Wikipedia:
有理数是否具有终止扩展取决于基数。例如,在基数10中,数字1/2具有终止扩展(0.5),而数字1/3不具有(0.333 ......)。在基数2中,只有2的幂(例如1/2或3/16)的分母的有理数终止。具有除2以外的素因子的分母的任何理性都将具有无限的二进制展开。这意味着当以十进制格式写入时,看起来短而精确的数字在转换为二进制浮点时可能需要近似。