首页 > 解决方案 > 仅通过将类型从 int 更改为 decimal 才能在数学结果中完全相同的值有何不同

问题描述

我正在做一些项目,需要做一些数学运算:

decimal X = (Value / 881) * (item.Type ? 130: 130 * 2);

例如,参数“Value”等于 3000。

如果“值”是类型int,结果是 390.. 如果“值”是类型decimal,结果是 442.67

这怎么可能 ??

.NET 小提琴

标签: c#integerdecimal

解决方案


因为十进制值。decimal如果你一步一步计算你的公式,你就会明白这种差异是由于当你用作类型时出现在小数点后的值

当您将 3000(整数)除以 881 时:

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

当您将 3000(十进制)除以 881 时:

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

.Net 小提琴

我希望 .net fiddle 能让您更好地了解我的答案


推荐阅读