Javascript Math.pow给出了错误的结果
我试图重复一个字符N次,遇到了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中引入了,您可以使用该数据类型获得准确的结果,尽管它不能
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