为什么 var 的计算结果是 int 而不是双精度
本文关键字:双精度 int 结果是 var 计算 为什么 | 更新日期: 2023-09-27 18:34:00
在下面的代码中,为什么编译器将结果变量计算为 3(整数)而不是 3.5(浮点数或双精度数)?
void Main()
{
var result = 7/2;
Console.WriteLine(result);
}
谢谢
因为
,如果你将一个int
除以另一个,结果是一个int
.此处已指定。
将两个整数相除时,结果始终为整数。例如,
7 / 3
的结果是2
。
然后var
只是使用表达式类型来创建int
因为这是您告诉它您想要的(尽管是隐式的)。如果你想要一个double
,你需要强制表达式的类型为双精度:
var result = 7.0 / 2;
或者,如果您正在使用int
变量,而您不能只附加.0
:
int seven = 7;
int two = 2;
var result = (double)seven / two;
因为你正在做整数除法。
您需要将其中一个值转换为浮点/双精度才能获得预期结果。
试试这个:
void Main()
{
var result = 7/2.0; //convert 7 or 2 to double
Console.WriteLine(result);
}
像/
这样的运算符也像函数。int/int
的签名是
public static int operator /(int numerator, int denominator)
{
//
}
所以返回值是 int
.
正如其他人指出的那样,你得到的是 3 而不是 3.5,因为你正在执行整数除法。 大多数答案都暗示但没有明确说明为什么它是整数除法。 这是整数除法,因为两个操作数都是整数。 它们都是整数,因为 7 和 2 是整数文本。 如果向任一文本添加小数点,它将变为双精度文本,从而导致执行双除而不是整数除法。 当将双精度除以 int 或将 int 除以双精度时,使用双除法。