【发布时间】:2021-09-17 17:25:41
【问题描述】:
我想问一个关于我今天用 C# 计算的问题。
double expenses = (pricePen + priceMark + priceLitres) - discount / 100*(pricePen + priceMark + priceLitres); //Incorrect
double expenses = (pricePen + priceMark + priceLitres) - (pricePen + priceMark + priceLitres)* discount/100; //Correct
正如您在等式末尾看到的那样,我必须将括号乘以名为“折扣”的整数,这显然是折扣百分比。
当我更改该值的位置时,无论它是在括号前面还是在括号后面,答案总是不同的,但在数学中,我什至检查了自己,即使值是,我也应该得到相同的答案放在括号前面可以乘或放在括号后面再乘,但C#不这么认为。
我想问人们,C# 实际上是如何计算这个的,为什么我最后会得到不同的结果? (结果应该是 28.5,而不是 38)
[Data: pricePen = 11.6; priceMark = 21.6; priceLitres = 4.8; discount = 25;]
(我知道这个问题无关紧要。)
【问题讨论】:
-
请勿发布代码图片。直接在问题中将代码作为文本发布。这有助于我们阅读它,节省带宽,帮助我们将其复制到我们的答案中,适当地调整浏览器的大小,并且它可以被搜索引擎索引。
-
并由无障碍设备阅读
-
尝试将第一行中的 100 更改为 100.0 - 您现在使用整数除法,得到整数 (0)
-
double costs 应该是 decimal costs ,尤其是为钱而生的类型,避免各种舍入问题。 - 另外:请查看整数除法!!!
-
discount是整数类型吗?那么discount/100是整数除法,它会截断小数部分并只保留整数值。
标签: c# math calculation