Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么var的计算结果是int而不是double?_C#_.net - Fatal编程技术网

C# 为什么var的计算结果是int而不是double?

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的结

在下面的代码中,为什么编译器将结果变量计算为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
的结果是
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)
{
    //
}