c#中1/252 = 0?

我正在做一个计算,在调试时我发现了这个:

double num = 1/252; 

当我调试它时,num被设置为零(0)。 是否有一个原因? 我想把它作为实际计算。

谢谢

是 – 该计算以整数运算执行。 试试这个:

 double num = 1.0 / 252.0; 

基本上,分配结果的变量类型不会影响正在执行的算术运算。 将一个整数除以另一个整数的结果是整数; 如果要使用浮点运算,则需要将一个或另一个操作数设置为浮点类型。 用文字做这个的一个简单方法就是在结尾贴上“.0”。 另一种方法是使用d后缀:

 double num = 1d / 252d; 

请注意,您只需要使一个操作数成为浮点值才能工作,但为了清楚起见,我可能会在这种情况下执行这两个操作。

当然,文字很容易做到,但对于其他表达式(变量,方法调用的结果等),您需要使用强制转换:

 int x = 1; int y = 252; double num = (double) x / (double) y; 

同样,你只需要投出其中一个,所以这也可以:

 int x = 1; int y = 252; double num = (double) x / y; 

请注意,这不是特定于除法 – 它也会影响其他算术运算符。

1和252都是文字整数,因此计算使用整数数学。 0是最接近的整数结果。 使用1.0或252.0获取正确的double值。

你正在划分2个整数并且投入到双精度,

尝试

 double num = 1d/252d;