javascript - 为什么一个数字的最后2位变成0?
问题描述
利用
嗨,所以我正在使用我存储在数据库中的一些用户 ID 来开发我的不和谐机器人,然后我将返回 ping 他们或给他们角色。
问题
虽然这是问题所在,但在数据库中它们从 ex:533692905387196429
变为533692905387196400
. 我尝试将它设置为一个字符串,它在数据库中工作,它完全按照它应该的方式存储。但是,当我从数据库中取回它们并将它们转换为数字或整数时,它们又会变成 ex: 533692905387196400
。
尝试使用
我尝试使用parseInt()
,parseFloat()
但Number()
它们都给出了相同的结果。
更多信息
此外,如果我删除 2 个数字,例如:533692905387196429
我19
从那里删除,它将返回533692905387(19)6429
而不是533692905387196429
和而不是533692905387196400
.
任何帮助表示赞赏!
解决方案
因此,Number.MAX_SAFE_INTEGER
是 9007199254740991(即 2 53 - 1)。您的数字太大而无法保持完全精确。
如果您想要一个具有该级别数字和精度的数字,您可以使用BigInt
,然后您必须非常小心如何使用它,BigInt
因为它不能直接用于代替常规Number
类型,但它可以保持无限精度并且您可以在两个 BigInt 值之间进行数学运算。
它是最好用作 aBigInt
还是String
真正取决于你用它做什么。如果这些只是某种您实际上并未进行数字运算的 ID,那么您可以将其保留为字符串。
推荐阅读
- javascript - 如何获取发送到 Vue 组件的默认内容槽?
- reactjs - 如何更改 npm 包 react-microsoft-login 按钮上的文本?
- javascript - 在Javascript中对嵌套的dict进行排序
- c# - 在调试器中停止,C# 线程挂在锁语句上,我如何确定哪个线程当前拥有锁?
- sql - 如何在Oracle中将带有一些服务符号的字符串转换为带有时区的时间戳?
- linux - 使用 ulimit -f 时陷阱信号 SIGXFSZ 不起作用
- javascript - “this”指的是“window”对象没有按预期工作
- json - 迷失在翻译中:在 Flutter 中将 JSON 解析为对象的问题
- rest - 使用 Micronaut 进行客户端错误处理
- delphi - 如何将 Delphi Form 继承与环境路径一起使用