このクラス定義を考えると:
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));
次の return ステートメントの括弧の配置の違いが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が括弧なしで誤った結果を計算するのはなぜですか? ここで奇妙な内部キャッシング、順序、メモリ、フーバーなどがありますか?