简单划分

我必须做一些愚蠢的事:

float ans = (i/3); 

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

i是一个int

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

 float ans = (i / 3.0f); 

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

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

它正在进行整数除法,因为i是一个int3是一个int 。 试试这个:

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

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

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

你在寻找的是:

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

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

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

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

只是另一个解决方