即使结果应为十进制,var也会转换为int

时间:2016-08-30 12:44:06

标签: c#

我知道这是一个非常基本的问题,但请解释原因。

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

为什么数字不是3.5?为什么它总是被转换为int?因为数字都是int?当您将其中一个数字转换为十进制时,这是有效的。

2 个答案:

答案 0 :(得分:7)

literals 72都被编译器解释为int。因此,除法是整数除法,结果为int3

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

在第二行中,您明确声明number为十进制,因此int返回的7 / 2已投放到decimal

如果您希望结果为decimal,则应使用m的正确文字结尾:

var number = 7/2m;

答案 1 :(得分:3)

因为7/3(int)7/(int)3。 如果您想获得decimal,请使用7m/2m