我在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结果,但我完全不知道如何实现这一点。我猜我应该在数学课上听得更近; - )
非常感谢任何帮助/意见!
提前致谢。
一切顺利,
博
答案 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