可以将小数乘以int吗?

jav*_*red 20 .net c# int decimal type-conversion

我是C#和.NET的新手,所以如果这是一个太简单的问题,我就会大肆宣传.

我有一个十进制变量decVar.我需要将它与整数变量相乘intVar.我需要结果decimal.那么我应该将整数变量声明为int或作为decimal

有这个代码,

decimal decVar = 0.1m;
decimal decRes = decVar * intVar;
Run Code Online (Sandbox Code Playgroud)

我应该这样声明:

int intVar = 3;
Run Code Online (Sandbox Code Playgroud)

或者像这样:

decimal intVar = 3;
Run Code Online (Sandbox Code Playgroud)

这是一个财务计算,所以我需要结果完全正确0.3.

upd:代码更新(感谢Jon)

Jon*_*eet 33

无所谓 - 无论如何int都将被转换为decimal:没有*(decimal, int)运营商,只是*(int, int)*(decimal, decimal).(当然还有其他类型.)

现在decimal不能隐式转换为int,但反向转换是有效的 - 这就是编译器的作用.

但是,您需要更改声明,decVar因为当前赋值运算符的右侧是double,而不是小数.你的意思是0.1米.你也想要半冒号:)


Jon*_*Jon 8

它没有任何区别.由于乘法的一个参数是decimal,另一个也将被转换decimal为(如果它不是一个).

此转换始终安全的:

转换注意事项

此类型提供了将Decimal值与SByte,Int16,Int32,Int64,Byte,UInt16,UInt32和UInt64进行转换的方法.从这些整数类型到Decimal的转换是从不会丢失信息或抛出异常的扩展转换.