我试图重复一个字符N次,但遇到了这个Math.pow函数。
但是当我在控制台中使用它时,结果对我来说没有任何意义:
Math.pow(10,15) - 1提供正确的结果999999999999999
但是为什么Math.pow(10,16) - 1提供10000000000000000呢?
您正在生成超出Number.MAX_SAFE_INTEGER值的结果,因此它们不再准确到单位。
这与 JavaScript 使用 64 位浮点数表示数字的事实有关,因此实际上您只有大约 16(十进制)位的精度。
由于在 EcmaScript 中引入了BigInt,您可以使用该数据类型获得准确的结果,尽管它不能与Math.pow. 相反,您可以使用**运算符。
查看 number 和 bigint(带n后缀)的使用有何不同:
10 ** 16 - 1 // == 10000000000000000
10n ** 16n - 1n // == 9999999999999999n
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
266 次 |
| 最近记录: |