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