flash - Flex/AS3很奇怪的简单数字运算问题

标签 flash apache-flex actionscript-3

我的问题很容易描述,在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/

相关文章:

ios - 是否可以将现有的 SWF 嵌入到 Air for iOS 应用程序中?

javascript - 指令/工厂不在生产中工作

javascript - Flash 或 Javascript 哪个更快?

apache-flex - 如何将 maven 依赖项添加到 Flex Builder 3 中的 flex 构建路径?

apache-flex - 从 Flex 3 安全访问 .NET Web 服务

android - 在移动设备上存储信息并唯一标识,在 Air 中跨平台

javascript - Flash安全沙箱: calling a Javascript that makes a call to a different site

css - Google Chrome 中 flash <embed> 标签周围的白色背景

apache-flex - 更好地进行 FlashDevelop

flash - Flash声音在大多数浏览器中不起作用