为什么使用Decimal.Multiply vs运算符乘法?

时间:2011-03-21 20:53:09

标签: c# math

decimal result = 100 * 200;

VS

decimal result = Decimal.Multiply(100, 200);

5 个答案:

答案 0 :(得分:20)

使用Decimal.Multiply将强制乘法输入decimal类型的输入,而不是使用的任何类型并转​​换为decimal

Decimal.Multiply(decimal d1, decimal d2)并强制执行并输出decimal类型。你可以做*的地方:

decimal result = yourDecimal * yourInt; 

这允许您在某些情况下混合和匹配类型,它将为您处理所有类型,但根据右侧的定义方式,类型不保证为十进制。

答案 1 :(得分:11)

*运算符已超载,并在内部调用Multiply。这只是一个可读性问题。

答案 2 :(得分:9)

*运算符为十进制类型重载,它与Decimal.Multiply()相同。但是,重载的*运算符要求至少有一个参数是十进制的。否则,将调用其他一些*运算符。在decimal result = 100 * 200中,首先将int类型相乘,然后转换为十进制。如果乘法结果大于Int32.MaxValue,则会出现溢出。

decimal d1 = 2147483647 * 2; // Overflow
decimal d2 = 2147483647m * 2; // OK
decimal d3 = Decimal.Multiply(2147483647, 2); // OK

答案 3 :(得分:4)

某些语言不支持重载运算符;那些必须调用Multiply()方法。

答案 4 :(得分:1)

不需要.NET语言直接支持小数,但在这种语言中,您仍然可以使用System.Decimal结构。由于也不要求.NET语言支持运算符覆盖,因此需要使用这些方法以便在这种情况下完全使用。