3

为什么这段代码输出 536870912 而不是 536870911.5?

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 会将数字解析为其他类型。(很可能是一个整数)

以下内容不起作用,因为解释器没有正确转换它们:

var test : double = 1073741823.0 / 2.0; // = 536870912
Debug.Log(test);

在我看来它正在阅读:double = int / int;


很有意思。这是我鼓励开发人员转向 C# 的另一个原因。

于 2013-03-27T00:39:31.833 回答