decimal result = 100 * 200;
vs
decimal result = Decimal.Multiply(100, 200);
发布于 2011-03-22 05:00:34
使用Decimal.Multiply
将强制乘法接受decimal
类型的输入,而不是正在使用并转换为decimal
的任何类型。
Decimal.Multiply(decimal d1, decimal d2)
并将强制执行decimal
类型的and输出。作为*
,你可以这样做:
decimal result = yourDecimal * yourInt;
这允许您在某些情况下混合和匹配类型,它将为您处理所有类型,但不能保证类型是十进制的,这取决于右侧的定义。
发布于 2011-03-22 04:56:29
*
操作符是重载的,它在内部调用Multiply
。这实际上只是一个可读性的问题。
发布于 2011-03-22 05:16:49
对于decimal类型,*
运算符是重载的,它与Decimal.Multiply()
相同。但是,重载的*
运算符要求至少有一个参数是十进制的。否则,将调用其他某个*
运算符。在decimal result = 100 * 200
中,int类型首先相乘,然后转换为decimal。如果乘法结果大于Int32.MaxValue
,则会出现溢出。
decimal d1 = 2147483647 * 2; // Overflow
decimal d2 = 2147483647m * 2; // OK
decimal d3 = Decimal.Multiply(2147483647, 2); // OK
https://stackoverflow.com/questions/5383560
复制相似问题