C# 在c中,向后计算增值税始终返回0#

C# 在c中,向后计算增值税始终返回0#,c#,double,C#,Double,在c中,它总是以“0”的形式返回,有什么想法吗?这是: 这将导致0 使其成为: 100 / (100 + 20) 确保所有参数都是浮点类型 顺便说一句,当我测试它时,函数返回“123.12” 更新: 正如在几条评论中指出的那样,您应该将其用于货币计算,尽管在这种情况下,这不太可能是一个问题 十进制值类型适用于需要大量有效整数和小数位数且无舍入误差的金融计算 你的一些文字是整数,用(100.0/(100.0+20.0)+price)来获得双精度算术。你有没有试过用(100d/(100+20)

在c中,它总是以“0”的形式返回,有什么想法吗?

这是:

这将导致0

使其成为:

100 / (100 + 20)
确保所有参数都是浮点类型


顺便说一句,当我测试它时,函数返回“123.12”


更新:

正如在几条评论中指出的那样,您应该将其用于货币计算,尽管在这种情况下,这不太可能是一个问题

十进制值类型适用于需要大量有效整数和小数位数且无舍入误差的金融计算


你的一些文字是整数,用
(100.0/(100.0+20.0)+price)
来获得双精度算术。

你有没有试过用
(100d/(100+20))
强制浮点算术?这不是常见问题?另外,不要对价格使用
double
。即使在修正整数除法之后,您的公式也不正确。应该是这样的,imo:
十进制价格=123.12m;十进制preVatPrice=价格/120万美元是的,这可能是一个倒推增值税的常见问题,但我已经知道怎么做了,只是我不知道双倍增值税的c#问题。不过,在处理货币时,你可能想使用十进制。作为一般规则;在这种情况下,这可能没有什么区别;四舍五入错误,如尾随000000…1,发生在您最不期望的时候,并且至少从较高的级别来看,它们可能是随机的。如果你不能容忍他们(钱),使用十进制。如果可以(大多数3D数学),浮点或双精度是可以的。
100.0 / (100.0 + 20.0)
100.0 / (100.0 + 20.0)
double preVatPrice = ((double)100 / (100 + 20) + price);