您好我对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)
答案 0 :(得分:1)
/
的优先级高于??
。
您的第一个表达式被解析为container.promotion_rate ?? (0 / 100m)
答案 1 :(得分:1)
null-coalescing运算符的优先级低于divide运算符。因此,您的代码被解释为
container.promotion_rate ?? (0 / 100m)
给你一个不同的结果。