C#中的Excel公式计算

本文关键字:计算 Excel 中的 | 更新日期: 2023-09-27 18:28:10

我在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结果,但我完全不知道如何实现这一点。我想我应该在数学课上仔细听;-)

非常感谢您对此提供的任何帮助/意见!

提前谢谢。

一切顺利,

Bo

C#中的Excel公式计算

您有一个打字错误。在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);

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

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

至少这给了我的结果

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