C# 仅通过将类型从int更改为decimal,同一数值在数学结果中的差异如何
我在做一个项目,需要做一些数学题:C# 仅通过将类型从int更改为decimal,同一数值在数学结果中的差异如何,c#,integer,decimal,C#,Integer,Decimal,我在做一个项目,需要做一些数学题: decimal X = (Value / 881) * (item.Type ? 130: 130 * 2); 例如,参数“值”等于3000 如果“值”的类型为int,则结果为390。。 如果“值”的类型为decimal,则结果为442.67 这怎么可能 因为十进制值。如果你一步一步地计算你的公式,你就会明白这种差异是由于当你使用decimal作为一种类型时,小数点后面的值造成的 将3000(整数)除以881时: 将3000(十进制数)除以881: 我希望
decimal X = (Value / 881) * (item.Type ? 130: 130 * 2);
例如,参数“值”等于3000
如果“值”的类型为int
,则结果为390。。
如果“值”的类型为decimal
,则结果为442.67
这怎么可能
因为十进制值。如果你一步一步地计算你的公式,你就会明白这种差异是由于当你使用
decimal
作为一种类型时,小数点后面的值造成的
将3000(整数)除以881时:
将3000(十进制数)除以881:
我希望.net fiddle能让您更好地了解我的答案当
Value
类型为int
时,您有整数除法:Value/881
即3000/881==3
;当Value
为decimal
时,则3000m/881==3.405…m
对int
执行的运算越不精确(例如,产生余数的除法),结果的累积误差就越大。
int Value = 3000
//Output is 3. Output is in integer
decimal X = (Value / 881); //When int is divided by int then result is in int
decimal Value = 3000
//Output is 3.4052213393870601589103291714. Output is in decimal.
decimal X = (Value / 881); //When decimal is divided by int then result is in decimal