向后计算增值税总是在c#中返回0

phi*_*owe 2 c# double

public string s()
{ 
  double price = 123.12
  double preVatPrice = (100 / (100 + 20) + price);

  return preVatPrice.ToString();
}
Run Code Online (Sandbox Code Playgroud)

在c#中,这总是返回为'0',为什么会有任何想法?

Ode*_*ded 8

这是整数除法:

100 / (100 + 20)
Run Code Online (Sandbox Code Playgroud)

这将导致0.

成为:

100.0 / (100.0 + 20.0)
Run Code Online (Sandbox Code Playgroud)

确保所有参数都是浮点类型.


BTW - 当我测试它时,函数返回"123.12".


更新:

正如几条评论所指出的那样 - 你应该decimal用于货币计算,尽管在这种情况下它不太可能成为问题.

十进制值类型适用于需要大量有效积分和小数位且没有舍入误差的财务计算.

  • 但是,在使用金钱时,您可能希望使用小数.JUst作为一般规则; 在这种情况下,它可能没有任何区别. (4认同)