【发布时间】:2017-08-26 03:59:43
【问题描述】:
我试图更好地理解为什么大数字、可能具有较大精度的处理不一致,特别是在 JavaScript 及其本地化工具(例如 ECMA-402/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
【问题讨论】:
标签: javascript ecmascript-intl