AS3 parseInt()方法限制



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

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

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

有人能告诉我我在这里做错了什么吗?

看起来添加一个("24421bff100318")效果不错。我不得不假设这意味着这是一个精度错误的情况。

因为可用内存只能表示有限数量的数字,所以有时计算机会进行估计。这在处理小数和非常大的数字时很常见。例如,在这个片段中可以看到,计算机显然无法添加基本小数:

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

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

为了进一步阅读以理解这个主题(因为我确实认为它很有趣),请查找"精度错误"one_answers"数据类型"。

最新更新