在下面的代码中,为什么编译器将结果变量计算为3(整数)而不是3.5(浮点数或双精度数)?
void Main()
{
var result = 7/2;
Console.WriteLine(result);
}
Run Code Online (Sandbox Code Playgroud)
谢谢
pax*_*blo 10
因为,如果你一个int接一个地划分,结果是一个int.这是在这里指定的.
除以两个整数后,结果始终为整数.例如,结果
7 / 3是2.
然后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)
因为你在做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)
| 归档时间: |
|
| 查看次数: |
271 次 |
| 最近记录: |