0

您好,我对 C# 中的这个数学函数有疑问,我想知道为什么会这样。这两行给出不同的结果,为什么?

container.price * (1 + (container.tax_rate / 100m)) * (1 - (container.promotion_rate ?? 0 / 100m))

返回 -> -839.9944

container.price * (1 + (container.tax_rate / 100m)) * (1 - ((container.promotion_rate ?? 0) / 100m))

返回 -> 50.99966

函数的唯一区别是第二个函数的括号:(container.promotion_rate ?? 0)

4

2 回答 2

1

/的优先级高于??

您的第一个表达式被解析为container.promotion_rate ?? (0 / 100m)

于 2013-07-19T15:29:17.997 回答
1

空合并运算符的优先级低于除法运算符。因此,您的代码被解释为

 container.promotion_rate ?? (0 / 100m)

这给你一个不同的结果。

MSDN 参考

于 2013-07-19T15:34:11.080 回答