繁体   English   中英

你如何划分整数并在C#中获得双倍?

[英]How do you divide integers and get a double in C#?

int x = 73;  
int y = 100;  
double pct = x/y;  

为什么我看到0而不是.73?

因为除法是用整数完成的,然后转换为double。 试试这个:

double pct = (double)x / (double)y;

它在所有类C语言中都是一样的。 如果除以两个整数,则结果为整数。 0.73不是整数。

常见的解决方法是将两个数字中的一个乘以1.0以使其成为浮点类型,或者只是将其转换为浮点类型。

因为操作仍然是int类型。 尝试double pct = (double)x / (double)y;

整数除法降低结果的小数部分。 请参阅: http//mathworld.wolfram.com/IntegerDivision.html

了解一行代码中的执行流程非常重要。 你可以正确地假设将等式的右边设置为double (在左侧)将隐式地将解决方案转换为double。 但是,流程执行表明x / y在您获得代码的double pct =部分之前自行计算。 因此,由于两个int彼此分开,它们将被隐式转换为double 之前计算为int解(在这种情况下,向零舍入)。

正如其他人所指出的那样,你需要将int变量转换为double s,这样解决方案就会变成double而不是int

这是因为除法( x )的左手操作数的类型是int类型,因此x / y的返回类型仍然是int 目标变量的类型为double事实不会影响操作。 要获得预期的结果,首先必须将x转换(转换)为double ,如:

double pct = (double)x / y;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM