AS3 parseInt() 方法限制

AS3 parseInt() method limitations

我在将十六进制字符串转换为 as3 中的数字时遇到了这个问题

我有价值观 str = "24421bff100317";十进制值 = 10205787172373271

但是当我解析它时我得到 parseInt(str, 16) = 10205787172373272

谁能告诉我我做错了什么

看起来添加一个(“24421bff100318”)效果很好。我必须假设这意味着这是一个精度错误的情况。

由于可用内存只能表示有限数量的数字,因此有时计算机会进行估算。这在处理小数和非常大的数字时很常见。它是可见的,例如,在这个片段中,显然计算机不能添加基本小数:

for(var i=0;i<3;i+=0.2){
    trace(i);
}

如果此级别的准确性至关重要,则有一些解决方法,即使用存储更多信息的数据类型("long" 而不是 Java 中的 "int" - 我相信 "Number" 可能在 AS3 中有效,但我没有针对您的情况对其进行测试)或者如果失败,将数字分解成更小的部分并将它们加在一起。

为了进一步阅读以理解这个主题(因为我确实认为它很吸引人),请查找 "precision errors" 和 "data types"。