我在Excel中有这个等式:=((247*(145/174)^3*60)/3600)*100
结果= 238.233
我在.Net中试过这个:
(Math.Pow(247.0 * (145.0 / 174.0), Convert.ToDouble(3*60)) / 3600.0) * 100;
问题是C#返回INF而不是结果,如果我尝试这样做:
((long)Math.Pow(247.0 * (145.0 / 174.0), Convert.ToDouble(3*60)) / 3600.0) * 100;
结果与Excel不匹配。
答案 0 :(得分:10)
我怀疑你应该写如下:
247.0*Math.Pow(145.0/174.0,3)*60/3600*100;
请参阅此处的小提琴:http://dotnetfiddle.net/B32N3B
这是因为在Excel中,运算符^
(上升到幂)优先于*
所以excel系列的意图是3
然后乘以60
,不升至3*60
,当然是溢出来的。