在 JavaScript 中,每个有限数字都有一个确切的实际值。例如:
const x = Number.MAX_VALUE
这里,x
的精确值为 21024 - 2971 =
179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368
我们可以通过使用 x
进行算术运算来证明这一点:
console.log(x % 10000) // 8368
但是我该如何获得所有这些小数位数呢?
我希望解决方案也适用于非整数,例如const y = Number.EPSILON
精确到了2-52 =
0.0000000000000002220446049250313080847263336181640625
2^52
的任何数都无法表示而不会失去精度。 - Felix KlingtoString(2)
会给你二进制表示;实际上,对于任何x
(除了10
),toString(x)
都会返回一个没有用科学计数法书写的结果。我不认为有内置的方法可以获得该表示。 - Felix Kling'0b' + x.toString(2)
传递给一个大十进制库,如 Decimal.js,然后从那里输出可能会解决问题。 - qntm