为什么.Net和Excel不同意这个数学?

War*_*War 4 c# math excel

我从一些C#和Excel中得到了一些非常奇怪的行为......

自己完成了数学运算后,我相信excel可能会给出正确的答案,但我的数学不是很好,所以可能是.Net编译器知道我不知道的事情.

所以我们走了......

以excel表格的形式给出这些数据:

total     sale val  days    irr
2431.65   2424.56   21      5.01
Run Code Online (Sandbox Code Playgroud)

irr(单元格D2)的公式如下:

=ROUND(100 * ((A2 - B2) / B2) * (360 / C2), 2)
Run Code Online (Sandbox Code Playgroud)

当我运行这个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);
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释我如何强迫C#/ .Net和Excel同意/如何重写这个公式以便两者同意?

Dan*_*röm 8

360 / daysRemaining
Run Code Online (Sandbox Code Playgroud)

这将成为C#中的整数除法:360/21 = 17而不是17.14285714,因为它将在Excel中.

将其更改360.0 /daysRemaining为使其成为浮点运算(或360m,因为它也被指出).