当前位置:  开发笔记 > 编程语言 > 正文

Flash添加错误

如何解决《Flash添加错误》经验,为你挑选了1个好方法。

在Flash中创建一个新的AS3文档,粘贴以下代码并运行它:

var a:Number=0;
trace(a)  //  0
a+=0.3;
trace(a)  //  0.3
a+=0.3;
trace(a)  //  0.6
a+=0.3;

trace(a)  //  0.8999999999999999
a+=0.3;
trace(a)  //  1.2
a+=0.3;
trace(a)  //  1.5
a+=0.3;
trace(a)  //  1.8
a+=0.3;
trace(a)  //  2.1
a+=0.3;
          //  ^ This is the output. Notice the inaccuracy starting from 0.9 / 0.89

为什么错误?我只是做一个普通的高分辨率加法.

任何解决方法?



1> paxdiablo..:

这是一个标准的浮点问题.二进制浮点数不能代表完整精度的十进制数范围,你需要做一些事情

trace (round (a, 1))

或者,更好的是,将它变成一个字符串并剥离超过第一个小数位的所有内容(因为舍入的结果也可能不容易用二进制表示).

虽然我不知道ActionScript.它仍然是一个众所周知的问题,并不仅限于AS3.

参见例如为什么我看到一个双变量初始化为某个值,如21.4为21.399999618530273?或Java程序中的奇怪浮点行为或浮点/舍入错误的简单示例是什么?.

推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有