Javascript Math.pow给出了错误的结果

Javascript Math.pow给出了错误的结果,javascript,pow,Javascript,Pow,我试图重复一个字符N次,遇到了Math.pow函数 但当我在控制台中使用它时,结果对我来说没有任何意义: Math.pow(10,15)-1提供正确的结果999999999999 但是为什么Math.pow(10,16)-1提供1000000000000000?您生成的结果超过了该值,因此它们不再精确到单位 这与JavaScript对数字使用64位浮点表示这一事实有关,因此在实践中,您只有大约16位(十进制)精度 由于在EcmaScript中引入了,您可以使用该数据类型获得准确的结果,尽管它不能

我试图重复一个字符N次,遇到了
Math.pow
函数

但当我在控制台中使用它时,结果对我来说没有任何意义:

Math.pow(10,15)-1
提供正确的结果999999999999


但是为什么
Math.pow(10,16)-1
提供1000000000000000

您生成的结果超过了该值,因此它们不再精确到单位

这与JavaScript对数字使用64位浮点表示这一事实有关,因此在实践中,您只有大约16位(十进制)精度

由于在EcmaScript中引入了,您可以使用该数据类型获得准确的结果,尽管它不能与
Math.pow
结合使用。相反,您可以使用
**
运算符

查看number和bigint(带
n
后缀)的用法有何不同:


与许多其他编程语言不同,JavaScript不定义不同类型的数字,如整数、短、长、浮点等

JavaScript数字始终按照国际IEEE 754标准存储为双精度浮点数字

此格式以64位存储数字,其中数字(分数)存储在位0至51,指数存储在位52至62,符号存储在位63:

整数(不带句点或指数符号的数字)最多可精确到15位。

可能会提到有。另一个有用的链接:
10  ** 16  - 1  // == 10000000000000000
10n ** 16n - 1n // ==  9999999999999999n