Javascript 为什么Number.prototype.toPrecision()在Chrome和Firefox中返回精度大于16的奇怪结果,而在IE11中则没有

Javascript 为什么Number.prototype.toPrecision()在Chrome和Firefox中返回精度大于16的奇怪结果,而在IE11中则没有,javascript,internet-explorer,google-chrome,firefox,precision,Javascript,Internet Explorer,Google Chrome,Firefox,Precision,我知道在Javascript中,最大安全数和最小安全数的精度为16 (在铬中测试): 但是,Number.prototype.toPrecision()允许数字大于16,直到21。在这个范围内,结果是wierd(wierd=我现在不明白的一切): IE11(11.0.99)按预期返回: 6.789.toPrecision(21) → "6.78900000000000000000" 2.345.toPrecision(21) → "2.34500000000000000000" 这是Chro

我知道在Javascript中,最大安全数和最小安全数的精度为16 (在铬中测试):

但是,Number.prototype.toPrecision()允许数字大于16,直到21。在这个范围内,结果是wierd(wierd=我现在不明白的一切):

IE11(11.0.99)按预期返回:

6.789.toPrecision(21) → "6.78900000000000000000"
2.345.toPrecision(21) → "2.34500000000000000000"
  • 这是Chrome(V8)和Java的JavaScript引擎中的一个bug吗 Firefox(SpiderMonkey)
  • IE11 JavaScript引擎(Chakra)是否更好 是Number.prototype.toPrecision()解释

可精确表示的最大整数的长度与浮点精度无关。Opera的Presto引擎也不进行任何舍入,因此看起来IE又是奇数了。是的,像往常一样IE是奇数,但是,这次IE是奇数和正确数吗?这是一个错误吗??我如何报告?可能是重复的
6.789.toPrecision(21) → "6.78899999999999970157" /*¿Why this "70157" ending in Chrome(34.0.1847.137) and Firefox(29.0.1)?*/
2.345.toPrecision(21) → "2.34500000000000019540" /*¿Why this "19540" ending in Chrome and Firefox?*/
6.789.toPrecision(21) → "6.78900000000000000000"
2.345.toPrecision(21) → "2.34500000000000000000"