C# 为什么var的计算结果是int而不是double?
在下面的代码中,为什么编译器将结果变量计算为3(整数),而不是3.5(浮点或双精度)C# 为什么var的计算结果是int而不是double?,c#,.net,C#,.net,在下面的代码中,为什么编译器将结果变量计算为3(整数),而不是3.5(浮点或双精度) 谢谢你,因为你正在做整数除法。 您需要将其中一个值转换为float/double,以获得预期结果 试试这个: void Main() { var result = 7/2.0; //convert 7 or 2 to double Console.WriteLine(result); } 因为,如果将一个int除以另一个,结果是int。那是指定的 当你除以两个整数时,结果总是一个整数。例如,7/3的结
谢谢你,因为你正在做整数除法。 您需要将其中一个值转换为float/double,以获得预期结果 试试这个:
void Main()
{
var result = 7/2.0; //convert 7 or 2 to double
Console.WriteLine(result);
}
因为,如果将一个
int
除以另一个,结果是int
。那是指定的
当你除以两个整数时,结果总是一个整数。例如,7/3
的结果是2
然后,var
只使用表达式类型创建一个int
,因为这是您告诉它您想要的(尽管是隐式的)。如果需要双精度,则需要将表达式的类型强制为双精度:
var result = 7.0 / 2;
或者,如果您使用的是int
变量,而您不能仅在.0
上添加:
int seven = 7;
int two = 2;
var result = (double)seven / two;
像
/
这样的运算符也类似于函数。int/int
的签名为
public static int operator /(int numerator, int denominator)
{
//
}
因此,返回值是
int
,正如其他人指出的那样,因为执行整数除法,所以得到的是3,而不是3.5。大多数答案暗示但没有明确说明的是为什么它是整数除法。这是整数除法,因为两个操作数都是整数。它们都是整数,因为7和2是整数文本。如果向任一文本添加小数点,它将成为双文本,导致执行双除法而不是整数除法。双除法用于将一个Double除以一个int或将一个int除以一个Double。您将一个int除以一个int。这总是会得到一个int。var计算就是这样。因为7和2都是int,所以编译器将尝试将结果返回为int。只需将任何一个转换为Double,你会得到双倍的结果。同样的原因是7/2
是3
为什么这个问题会重新打开?o、 o不是复制品吗?我是不是投错票了?我希望自2010年以来一直在回答c#问题的人能够非常轻松地研究这个问题,特别是因为这是大多数人可能会学到的第一件事。
public static int operator /(int numerator, int denominator)
{
//
}