让我解释一下我的问题.我使用以下方法将二进制数转换为十进制数: number.toString(16)

此方法呈现的数字看起来确实是十六进制形式.但问题是:我需要从通过身份验证API(在本例中为STEAM)检索的用户的ID中获取数据,并且我需要通过第三方SQL数据库检索数据.该用户在数据库中的识别符确实是他的STEAM识别符,但格式为十六进制.

问题是,我检索并转换为十六进制形式的标识符与数据库的不同.然后,人们可能会想,数据库的标识符不只是不同吗?这就是我的各种测试的用武之地,证明我不会!

让我再详细解释一下:

使用此代码:

let n = 76561199121591748;
console.log(n.toString(16))

代码返回给我:

110000145386dc0

这将返回以下内容(这是数据库ID):

110000145386dc4

根据我的所有测试(在线脚本的示例、NodeJS转换库的测试等),一切都会导致错误的结果.尽管如此,在线转化网站(如this site)向我展示了良好的结果.所以我想问题一定出在方法上.你能告诉我这是怎么解释的吗?提前谢谢你

推荐答案

JavaScript数字是IEEE双精度浮点数.可以表示exactly的整数集合是那些整数n,使得-253-1=n1=253-1.

常量Number.MAX_SAFE_INTEGER的值为253-1,或9,007,199,254,740,991十进制.

您的值76,561,199,121,591,748是一个大于Number.MAX_SAFE_INTEGER的数量级,因此无法准确表示.

您可能会考虑使用BigInt而不是Number.

Javascript相关问答推荐

Plotly热图:在矩形上zoom 后将zoom 区域居中

分层树视图

无法访问Vue 3深度监视器中对象数组的特定对象值'

在带有背景图像和圆形的div中添加长方体阴影时的重影线

无法从NextJS组件传递函数作为参数'

在react JS中映射数组对象的嵌套数据

对路由DOM嵌套路由作出react

TypeError:无法分解';React2.useContext(...)';的属性';basename';,因为它为空

在浏览器中触发插入事件时检索编码值的能力

JavaScript是否有多个`unfined`?

如何确保预订系统跨不同时区的日期时间处理一致?

使用Reaction窗体挂钩注册日历组件

使用API调用的VUE 3键盘输入同步问题

使用createBrowserRoutVS BrowserRouter的Reaction路由

FindByIdAndUpdate在嵌套对象中创建_id

在此div中添加一个类,并在一段时间后在Java脚本中将其删除

我想为我的Reaction项目在画布上加载图像/视频,图像正在工作,但视频没有

在不使用AJAX的情况下将JavaScript数组值传递给Laravel控制器?

Reaction:从子组件调用父组件中的函数

如何在chartjs-plugin-data Labels v2.1.0插件中设置照片?