为什么 var 的计算结果是 int 而不是双精度

本文关键字:双精度 int 结果是 var 计算 为什么 | 更新日期: 2023-09-27 18:34:00

在下面的代码中,为什么编译器将结果变量计算为 3(整数)而不是 3.5(浮点数或双精度数)?

void Main()
{
    var result = 7/2;
    Console.WriteLine(result);
}

谢谢

为什么 var 的计算结果是 int 而不是双精度

因为

,如果你将一个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 除以双精度时,使用双除法。