给定这个类定义:
package {
public class Calc {
public static function I(i:Number, s:Number):Number {
var A:Number = helper_A(s);
var B:Number = helper_B(s);
var C:Number = helper_C(s);
return A * i + (Math.exp(B * i + C) - Math.exp(C) / B);
}
}
}
静态函数helper_A
,helper_
B 和helper_C
做一些数学运算(带有基本计算的单行代码和Math.pow()
)。
当用
trace(Calc.I(27, 1985));
返回语句中括号位置的以下差异如何function I
影响计算结果?
这个版本 1)
return A * i + (Math.exp(B * i + C) - Math.exp(C) / B);
痕迹0.01721552341268775
虽然这个版本 2)
return A * i + ((Math.exp(B * i + C) - Math.exp(C)) / B);
痕迹0.017092065919602526
据我所知,数学上的结果应该是相同的。Actionscript/Flash 怎么会在没有括号的情况下计算出错误的结果?是否有一些奇怪的内部缓存、顺序、内存、foobar ......这里发生了什么?