このコードが536870911.5ではなく536870912を出力として提供するのはなぜですか?
var z : double = 1073741823.0 / 2.0;
Debug.Log(z.ToString("F15"));
そして、どうすればそれを536870911.5を出力させることができますか?これは私には奇妙に思えます...
このコードが536870911.5ではなく536870912を出力として提供するのはなぜですか?
var z : double = 1073741823.0 / 2.0;
Debug.Log(z.ToString("F15"));
そして、どうすればそれを536870911.5を出力させることができますか?これは私には奇妙に思えます...
C#を使用して以下で取得できます。
double test = 1073741823.0d / 2.0d; // = 536870911.5
Debug.Log(test);
UnityScriptでは、dを追加するだけです。
var test : double = 1073741823.0d / 2.0d; // = 536870911.5
Debug.Log(test);
二重表記がない場合、UnityScriptは他のタイプと同じように数値を解析します。(おそらくint)
インタプリタが正しくキャストしていないため、以下は機能しません。
var test : double = 1073741823.0 / 2.0; // = 536870912
Debug.Log(test);
私にはそれが読んでいるように見えます:double = int / int;
とても興味深い。これが、開発者にC#への移行を推奨するもう1つの理由です。