即使结果应该是十进制,Var也被强制转换为int

  • 本文关键字:转换 int Var 结果 十进制 c#
  • 更新时间 :
  • 英文 :


我知道这是一个非常基本的问题,但是请解释一下为什么会这样。

var number = 7 / 2; // number is 3
decimal number = 7 /2; // still number is 3

为什么数字不是3.5?为什么它总是被强制转换为int?因为这两个数都是整型?

字量 72都被编译器解释为int。因此,除法是整数除法,导致int值为3

使用var关键字,编译器从表达式中推断出正确的类型,导致第一行的numberint类型。

在第二行,您显式地将number声明为十进制,因此7 / 2返回的int被强制转换为decimal


如果您希望结果是decimal,您应该使用以m结尾的正确文字:

var number = 7/2m;

因为7/3(int)7/(int)3。如果您想要得到一个小数,使用7m/2m

最新更新