C#中的Excel公式计算

时间:2012-03-19 10:16:20

标签: c# excel

我在Excel中需要用C#编写的计算有点麻烦。

Excel中的计算如下:

=(26/1000*1,500+(0,0000039096*(26*26)+0,000082819*26+0,005066))*149468556,2
*(1+0,10%)

这给出了结果:7310663,398

在C#中我有完全相同的计算(除了14949中的更多小数..数字:

(26.0 / 1000.0 * 1.500 + (0.0000039096 * (26.0 * 26.0) + 0.000082819 * 26.0 + 0.005066)) * 149468556.2 * (1 + 0.1);

结果如下:7632589.7787303319

由于公式中的最后一个数字是百分比,我也试过这个:

(26.0 / 1000.0 * 1.500 + (0.0000039096 * (26.0 * 26.0) + 0.000082819 * 26.0 + 0.005066)) * 149468556.2 * (1 + (0.1/100));

结果如下:6945656.6986446008

当然,我需要在C#中匹配Excel结果,但我完全不知道如何实现这一点。我猜我应该在数学课上听得更近; - )

非常感谢任何帮助/意见!

提前致谢。

一切顺利,

3 个答案:

答案 0 :(得分:2)

你有一个错字。在Excel中,您使用了(1+0,10%),在C#中使用了(1 + 0.1)

由于0.10%确实是0.10 / 100,您应该使用(1 + 0.001)代替。

所以正确的C#将是:

(26.0 / 1000.0 * 1.500 + 
  (0.0000039096 * (26.0 * 26.0) + 0.000082819 * 26.0 + 0.005066)) * 
  149468556.2 * (1 + 0.001);

答案 1 :(得分:1)

我的建议是保留所有小数。这可能是一个精确的错误。

你的结果与你应该拥有的结果类似,这意味着它不是计算错误(比如忘记除以100,等等。这会直接显示在你的结果中)。

答案 2 :(得分:0)

至少这给了我结果

double ds = (26.0 / 1000.0 * 1.500 + (0.0000039096 * (26.0 * 26.0) + 0.000082819 * 26.0 + 0.005066)) * 149468556.2 * (1.0 + 0.1/100.0);
Console.WriteLine(ds.ToString());

结果7310663.39550679