【问题标题】:javascript parseInt errors with long hex string [duplicate]带有长十六进制字符串的javascript parseInt错误[重复]
【发布时间】:2013-11-04 15:24:14
【问题描述】:

我正在尝试在 javascript 中将十六进制字符串解析为十进制数,但我遇到了一些奇怪的事情。

十六进制字符串是'27a4b0795a7d749c',我知道十进制数是2856602098915439772,由python和windows的calc检查。但是 js 的 parseInt 没有返回正确的答案。

这是测试代码:

var hex = '27a4b0795a7d749c';
console.log(hex);
var num = parseInt(hex, 16);
console.log(num);
var hex2 = num.toString(16);
console.log(hex2);

控制台显示(我在 Windows 64 位上使用 Chrome 30.0.1599.101 m):

我在 IE9 中测试它,它也得到了2856602098915439600。但是这是怎么发生的呢?

【问题讨论】:

  • Javascript 数字没有那么精确。
  • @lonesomeday 非常感谢

标签: javascript


【解决方案1】:

根据 this answer(引用 ECMA 规范),最大的 Javascript 整数是 9007199254740992 - 远低于您的预期值。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-07
  • 2014-06-01
  • 2013-01-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
相关资源
最近更新 更多