2015-11-24 54 views
1

我試圖把這種函數從Excel到C#:翻譯Excel函數到c#Math.pow不導致相同的值

= 10 ^(0.1 *( - 44.1224 + 3.32 *( - 97.060520104064452 * LOG (0.89 *(一百六十〇分之二百)))))

的Excel給我:1.2467E-06

var value = Math.Pow(10, 0.1 * (-44.1224 + 3.32 * (-97.060520104064452 * Math.Log10(0.89 * (200/160))))); 

C#給我C#值= 0.0016543260792358536

任何人有任何想法,爲什麼我不在Excel和Excel中不會有相同的值 C#?

回答

6

因爲C#正在爲您四捨五入。

更改此:

200/160 

200.0/160.0 

輸出本地:

1.24676291550131E-06 
+0

整數數學ftw。 –

+1

更具體地說,它是做一個整數除法,它截斷了所得商的十進制值。 – shawnt00

+0

謝謝羅布/格蘭特/肖恩!那樣做了! – ZBoris

0

這是因爲一百六十零分之二百被強制轉換爲一個整數,截斷你的結果。爲了解決這個問題,你可以按照Rob的建議去做,並將分子或代名詞寫爲浮點數。見the/operator reference.

+0

謝謝Nielsvh! – ZBoris