2011-01-13 37 views
2
public string s() 
{ 
    double price = 123.12 
    double preVatPrice = (100/(100 + 20) + price); 

    return preVatPrice.ToString(); 
} 

在C#中總是返回爲'0'任何想法爲什麼?向後計算增值稅始終返回爲0在c#

+0

你試過使用`(100d /(100 + 20))`來強制浮點運算嗎? – thecoop 2011-01-13 14:49:25

+3

這個東西沒有問題嗎?另外,不要使用'雙'的價格。 – 2011-01-13 14:50:27

回答

8

這是integer division

100/(100 + 20) 

這將導致0

使之成爲:

100.0/(100.0 + 20.0) 

,以確保所有參數都浮點類型。


順便說一句 - 當我測試它時,函數返回「123.12」。


更新:

正如指出的幾點意見 - 你應該使用decimal貨幣計算,儘管在這種情況下,它不可能是一個問題。

十進制值類型適用於需要大量重要整數和小數位且無舍入誤差的財務計算。

1

您的一些文字是整數,使用(100.0/(100.0 + 20.0) + price)來獲得雙精度算術。

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