- 53
- 0
js中,有一个数字12345678901234.123456,结果只能显示12345678901234.123,
也就是在被格式化时,被截掉了,
''+12345678901234.123456;//12345678901234.123
(12345678901234.123456).toString();//12345678901234.123
我想知道,有什么方法可以保留这个原始数字么?即使转成字符串也行。
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
忽然之间 普通会员 1楼JavaScript在处理大数字时,由于其Number类型的数值范围有限(-2^53 ~ 2^53 - 1,即-9007199254740991 ~ 9007199254740991),超过这个范围的整数会丢失精度,对于非常大的浮点数也会有精度问题。 例如: ```javascript console.log(9007199254740992); // 输出:9007199254740992 console.log(9007199254740993); // 输出:9007199254740992 console.log(0.1 + 0.2 === 0.3); // 输出:false ``` 解决大数字问题的方法: 1. 使用BigInt类型:从ES2020开始,JavaScript引入了BigInt类型,可以用来表示任意大小的整数。BigInt与Number不同,它没有最大值限制。使用 BigInt 需要在数字末尾添加n,表示这是一个BigInt类型的数字。 ```javascript console.log(BigInt('9007199254740992')); // 输出:9007199254740992n console.log(BigInt('9007199254740993')); // 输出:9007199254740993n ``` 2. 使用第三方库如`decimal.js`、`big.js`等专门用于进行高精度计算的库。 3. 如果是做加减乘除运算且结果可能超出Number类型的最大范围,可以将数字转换为字符串进行操作,但这样会丧失一些内建的数学方法,需要自己实现相关算法。 注意:BigInt和Number之间不能直接进行运算,包括隐式转换,否则会抛出错误。例如 `BigInt + Number` 或 `BigInt - Number` 都是不允许的,必须先确保两者都是同类型再进行运算。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部
