3

このコードが536870911.5ではなく536870912を出力として提供するのはなぜですか?

var z : double = 1073741823.0 / 2.0;
Debug.Log(z.ToString("F15"));

そして、どうすればそれを536870911.5を出力させることができますか?これは私には奇妙に思えます...

4

1 に答える 1

3

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つの理由です。

于 2013-03-27T00:39:31.833 に答える