【发布时间】:2023-03-22 08:20:01
【问题描述】:
问题来了:
var p:int = 0;
var n:Number = 0;
n = 32.999999999999999;
p = Math.floor(n);
trace(p); // returns 33
n = 32.11111111111111;
p = Math.floor(n);
trace(p); // returns 32
我希望这两个都返回 32。我已经搜索过,这似乎是 AS3 中未报告的错误。还是……我做错了什么?
【问题讨论】:
-
你试过只用 32.9 吗?可能是您试图过于精确,因此可能会说 32.999999999999999 == 33(即,因为 .9 重复 == 1)您是否尝试仅跟踪 n?
-
javascript 返回相同的结果,让我相信这是预期的结果,尽管定义 Floor 应该做什么没有意义......奇怪吗?
-
javascript 版本:jsfiddle.net/jpsJ8
-
是的,似乎这也是 as3 与 as2 的一个已知问题 - 他们指向的这篇 KB 文章已找不到,但显然它描述了问题 - kirupa.com/forum/showthread.php?t=247416
-
谢谢大家——我无法制作 n 32.9,因为它来自音频文件,而这就是 ActionScript 在音频文件中获取位置的方式。无赖!我的真实n往往是这样的:13202.990233456
标签: flash actionscript-3 math actionscript