javascript - (444.2).toFixed(14) 中的 toFixed 隐蔽问题

问题描述

作为标题

当我使用 toFixed 转换浮点数时

(0.2).toFixed(4) ->       0.2000
(444.2).toFixed(4) ->   444.2000
(0.2).toFixed(14) ->      0.20000000000000
(444.2).toFixed(14) ->  444.19999999999999  //why ?!!!

我不明白是什么导致了这个结果。

是否有任何 javascript 方法可以避免此问题?

解决方法

浮点数不能以二进制精确表示所有小数。解决这个问题的一种方法是使用 parseFloat:

console.log(parseFloat((444.2).toFixed(14)));