2016-02-01 54 views
4

我有一些奇怪的行爲從一些C#和Excel中...爲什麼.Net和Excel不同意這個數學?

自己做了數學我相信,Excel可能會給出正確的答案,但我的數學不是很好,所以它可能是.Net編譯器知道我沒有的東西。

所以在這裏我們去...

考慮到一個Excel工作表的形式,這樣的數據:

total  sale val days irr 
2431.65 2424.56 21  5.01 

的IRR(D2單元格)的計算公式如下:

=ROUND(100 * ((A2 - B2)/B2) * (360/C2), 2) 

當我運行這個C#時我得到結果4.97 ...

var totalIncludingTax = 2431.65M; 
var saleValue = 2424.56M; 
var daysRemaining = 21; 

var result = Math.Round(100.0m * ((totalIncludingTax - saleValue)/saleValue) * (360/daysRemaining), 2); 

任何人都可以解釋我可以如何強制C#/ .Net和Excel同意/我如何重寫這個公式,以便兩人同意?

回答

8
360/daysRemaining 

這將成爲C#中的整數除法:360/21 = 17而不是17.14285714,因爲它將在Excel中。

將其更改爲360.0 /daysRemaining以使其成爲浮點運算(或已指出的360m)。

+0

或(十進制)360 /天剩餘 – mybirthname

+0

絕對血腥的天才! – War