为什么此代码将536870912作为输出而不是536870911.5?
var z : double = 1073741823.0 / 2.0;
Debug.Log(z.ToString("F15"));
我怎样才能输出536870911.5? 这对我来说似乎很奇怪......
答案 0 :(得分:3)
您可以使用C#来获取以下内容:
double test = 1073741823.0d / 2.0d; // = 536870911.5
Debug.Log(test);
在UnityScript中,您只需要添加d's
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#的另一个原因。