为什么这段代码输出 536870912 而不是 536870911.5?
var z : double = 1073741823.0 / 2.0;
Debug.Log(z.ToString("F15"));
我怎样才能让它输出 536870911.5?这对我来说似乎很奇怪......
为什么这段代码输出 536870912 而不是 536870911.5?
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 会将数字解析为其他类型。(很可能是一个整数)
以下内容不起作用,因为解释器没有正确转换它们:
var test : double = 1073741823.0 / 2.0; // = 536870912
Debug.Log(test);
在我看来它正在阅读:double = int / int;
很有意思。这是我鼓励开发人员转向 C# 的另一个原因。