decimal result = 100 * 200;
Run Code Online (Sandbox Code Playgroud)
VS
decimal result = Decimal.Multiply(100, 200);
Run Code Online (Sandbox Code Playgroud)
Kel*_*sey 22
使用Decimal.Multiply
将强制乘法来获取类型的输入decimal
而不是正在使用和转换的类型decimal
.
Decimal.Multiply(decimal d1, decimal d2)
并将强制执行和输出类型decimal
.当作为*
你可以这样做:
decimal result = yourDecimal * yourInt;
Run Code Online (Sandbox Code Playgroud)
这允许您在某些情况下混合和匹配类型,它将为您处理所有类型,但根据右侧的定义方式,类型不保证为十进制.
Chr*_*rle 11
该*
操作符被重载并调用Multiply
内部.这只是一个可读性的问题.
的*
操作符被重载十进制类型和它是相同的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
Run Code Online (Sandbox Code Playgroud)