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

时间:2011-01-13 14:47:22

标签: c# double

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

  return preVatPrice.ToString();
}

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

3 个答案:

答案 0 :(得分:8)

这是integer division

100 / (100 + 20)

这将导致0。

进入:

100.0 / (100.0 + 20.0)

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


BTW - 当我测试它时,该函数返回“123.12”。


更新

正如几条评论所指出的那样 - 您应该使用decimal进行货币计算,但在这种情况下,它不太可能成为问题。

  

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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

double preVatPrice = ((double)100 / (100 + 20) + price);