为什么var求值为int而不是double?

Paw*_*hra 2 .net c#

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

void Main()
{
    var result = 7/2;
    Console.WriteLine(result);
}
Run Code Online (Sandbox Code Playgroud)

谢谢

pax*_*blo 10

因为,如果你一个int接一个地划分,结果是一个int.这是在这里指定的.

除以两个整数后,结果始终为整数.例如,结果7 / 32.

然后var只使用表达式类型来创建一个int因为这就是你告诉它你想要的东西(尽管是隐含的).如果你想要一个double,你需要强制表达式的类型为double:

var result = 7.0 / 2;
Run Code Online (Sandbox Code Playgroud)

或者,如果你使用int 变量,你不能只是在.0:

int seven = 7;
int two = 2;
var result = (double)seven / two;
Run Code Online (Sandbox Code Playgroud)


Sud*_*udi 6

因为你在做Integer分工.

您需要将其中一个值转换为float/double以获得预期结果.

试试这个:

void Main()
{
  var result = 7/2.0; //convert 7 or 2 to double
  Console.WriteLine(result);
}
Run Code Online (Sandbox Code Playgroud)