简单划分

时间:2011-01-03 14:17:34

标签: c# .net

我必须做一些愚蠢的事情:

float ans = (i/3);

那么为什么当i = 7出现在2.0时?

i是一个int

7 个答案:

答案 0 :(得分:11)

这是因为如果两个操作数都是整数,则/ operator执行整数除法。你可以这样做:

float ans = (i / 3.0f);

答案 1 :(得分:6)

您需要将其中一个操作数设置为float,否则在将结果转换为float之前,计算将使用整数 first (总是产生整数)来完成。

float ans = ((float) i) / 3;

答案 2 :(得分:0)

它正在进行整数除法,因为iint3int。试试这个:

float ans = ((float)i/3.0f);

答案 3 :(得分:0)

使用float ans = (i / 3.0)float ans = (i / 3f)float ans = ((float)i / 3)。如果双方都是整数类型,则/执行整数除法。

答案 4 :(得分:0)

非常简单:在C#中,int / int = int。

答案 5 :(得分:0)

您正在寻找的是:

float ans = ((float)i/3);

否则,您将采用两个整数并将它们除以找到除数进入红利的全部次数。 (如上所述,无论目标类型如何,int / int = int。对于编译器,“3”是另一个整数(除非您将其指定为3.0f))

答案 6 :(得分:0)

我假设你在某种循环中有这个。您可以将i变量指定为浮点数。

for (float i = 0; i < 10; i++)
{
   float ans = (i/3);
   // statements
}

只是另一种解决方案。