我有一个C#方法,它接受三个string参数.将它们转换为后decimal,我正在尝试执行简单的数学计算.我不明白,为什么结果不对?
decimal d = MyFunction(x, y, z);
public decimal MyFunction(string x, string y, string z)
{
decimal dx = 0;
decimal dy = 0;
decimal dz = 0;
Decimal.TryParse(x, out dx);
Decimal.TryParse(y, out dy);
Decimal.TryParse(z, out dz);
decimal result = dx - dz + dy;
return result;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢.
编辑以回复更多问题信息:
我没有看到您的问题.我得到151804.25,这是做的正确结果(1186197.29 - 1260711.19)+ 226318.15.
也许你感到困惑,因为你期望x - z + y表示x - (z + y)而不是(x - z)+ y吗?
C#运算符优先级为 - 和+是从左到右,所以它意味着(x - z)+ y.如果你想要x - (z + y),你将不得不这样写.
浮点运算常常根本不准确的(尽管decimal确实好过了很多float,并double为货币和类似用途).例:
decimal x = 1m / 3m;
decimal y = 0;
for (int i = 0; i < 1e6; i++)
{
y += x;
}
Run Code Online (Sandbox Code Playgroud)
结果y:
333333.33333333333333333072026
| 归档时间: |
|
| 查看次数: |
3848 次 |
| 最近记录: |