首页 > 解决方案 > Javascript用0替换最后一个数字而不是用指数符号表示数字

问题描述

我有应该处理大数字的javascript代码,并希望它们以指数表示法显示。我无法弄清楚为什么 x 值将最后 4 位数字替换为 0,但 y 值甚至更大的数字只会按预期显示 - 使用指数表示法。然后我想用固定点显示 x 它返回完全错误的值。以下代码在控制台中进行了测试。知道为什么会这样吗?

 var y=1111111111111111111111111111111111111111     >     1.1111111111111112e+39  
 var x=111111111111111111111                        >     111111111111111110000
 Number(x).toFixed(4)                               >     "111111111111111114752.0000"

var y=1111111111111111111111111111111111111111;
console.log(y);
var x=111111111111111111111 ;
console.log(x);
console.log(Number(x).toFixed(4));

标签: javascriptmathexponential

解决方案


toFixed() 返回 numObj 的字符串表示形式,它不使用指数表示法,并且在小数点后具有精确的数字。必要时对数字进行四舍五入,必要时用零填充小数部分,使其具有指定的长度。如果 numObj 的绝对值大于或等于 1e+21,则此方法只需调用 Number.prototype.toString() 并以指数表示法返回一个字符串。

警告:浮点数不能以二进制精确表示所有小数。这可能会导致意外结果,例如 0.1 + 0.2 === 0.3 返回 false 。

有关更多信息,请查看:https ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Number/toFixed


推荐阅读