AS3のメンバ変数(Number型)を割り算で初期化したら整数値になってた件

  • このエントリーをはてなブックマークに追加
  • 0

Flexコンパイラのバグか何かかも知れんし、ちゃんと説明可能な仕様かも知れんが、
下のソースを実行すると、

ActionScript

  1. package
  2. {
  3.     import flash.display.Sprite;
  4.  
  5.     public class Sample extends Sprite
  6.     {
  7.         public var num:Number = 1 / 30;
  8.         public function Sample()
  9.         {
  10.             var num2:Number = 1 / 30;
  11.             trace(num);
  12.             trace(num2);
  13.             trace(1 / 30);
  14.         }
  15.     }
  16. }

出力がこうなる。

ActionScript

  1. 0
  2. 0.03333333333333333
  3. 0.03333333333333333

なんで、メンバ変数だけNumber型が0になるんだ?

何故これに気付いたかと言うと、Box2DAS3のサンプルソース「TestBed\Test.as」に同じコードがあり、動かなくて困ったからだ。

スポンサーリンク
スポンサーリンク
  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
スポンサーリンク