为什么(1/90)= 0?

时间:2015-02-21 22:25:25

标签: c#

我在Unity3D中使用C#工作,我得到了一个奇怪的结果。谁能告诉我为什么我的代码等于0?

float A = 1 / 90;

1 个答案:

答案 0 :(得分:5)

文字190被解释为int。所以使用了integer division。之后,结果将转换为float

通常,C#会将所有数字序列(不带小数点)读作int。如有必要,int将转换为float 。但在转让之前,这不是必要的。因此,两者之间的所有计算均以int s完成。

换句话说,你写的是:

float A = (float) ((int) 1)/((int) 90)

(在这里明确说明,这或多或少是编译器读取的内容)。

现在处理两个int的除法,使得仅考虑积分部分。 0.011111的整数部分为0,因此为零。

但是,如果您将其中一个文字修改为浮点(1f1.0f90f,...)或两者,则可以使用。因此,请使用以下方法之一:

float A = 1/90.0f;
float A = 1.0f/90;
float A = 1.0f/90.0f;

在这种情况下,将执行浮点除法。其中考虑了两个部分。