我想更好地理解为什么大数字可能具有较大的精度不一致处理,特别是在JavaScript和它的本地化设施(如ECMA-402/Intl)中。我假设这与浮点数的使用有关,但我想知道限制的位置和/或如何避免这些缺陷。Intl格式化大型浮点数
例如,使用Intl.NumberFormat:
console.log(new Intl.NumberFormat('en-US', { minimumFractionDigits: 3, maximumFractionDigits: 3 }).format(9999999999990.001)); // logs 9,999,999,999,990.000
let test1 = 9999999999990.001
console.log(test1); // logs 9999999999990.002
我怎么能揣摩出这些数字开始变得不一致?是否有某种限制?当我增加小数精度时,这种限制是否会发生变化? :
let test2 = 9999999999990.0004;
console.log(test2) // logs 9999999999990
http://floating-point-gui.de/ –