[英]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.