我的问题很容易描述,在flex中:
0.8 - 0.2 = 0.6000000000000001
以前有人得到过这个,我确定前两个成员是 0.8 和 0.2 并且是 Number 类,为什么会发生这种情况?
还有一件事,我从 *
类型转换值,如下所示:
var value:*=0.8;
var castValue:Number = Number(value);
但仅此而已,如果我跟踪值
,我会得到0.8而不是0.800000000000001或其他东西。
最佳答案
这在所有语言中都是一个相当常见的问题,因为 Floating Point Number Precision 。您无能为力,因为它是所有机器上都可能出现的错误值。
您可以做的是设置您想要的数字精度:
trace(castValue.toFixed(5)); // Gives five decimals after the point
很多时候,Flash 在将数字转换为字符串(用于视觉显示)时会为您舍入这些数字,从而消除用户可见的大部分错误。
关于flash - Flex/AS3很奇怪的简单数字运算问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6154651/