统一的浮点划分

时间:2013-03-27 00:02:01

标签: floating-point unity3d unityscript

为什么此代码将536870912作为输出而不是536870911.5?

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

我怎样才能输出536870911.5? 这对我来说似乎很奇怪......

1 个答案:

答案 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#的另一个原因。