2012-12-28 41 views
3

我只是想知道,因爲我建立的應用程序做了一個相當長的公式,其結果與在Excel電子表格中完成時有所不同,我得到了公式。輸入數字越高,差異越大。以下是我在xcode中輸入的公式:
360 * num1 * num3 * (1 - powf(14.9/num1, 0.286))
(num1和num3是輸入數字)。
這裏是Excel的計算:
=360*R9*R11*(1-((R10/R9)^0.286))
R9等於num1,並且R11等於num3R10 14.9)Objective-c是否遵循操作順序(Bedmas)?

我沒有看到在方程式的差異,但如果這樣做請指出。我認爲它是二者之一(可能是ob-c之一)正在做一些與我預期不同的事情。

+0

的Excel?坦白說,爲什麼? – 2012-12-28 19:57:37

+0

@ H2CO3因爲有人使用Excel來計劃/平衡/測試該公式?例如,一些遊戲設計師會這樣做,以平衡遊戲內實體的統計數據。 – delnan

+1

+1爲好問題。 –

回答

2

是的。 Objective-C是C的超集。因此,Objective-C的所有功能都是C所具備的。

360 * num1 * num3 * (1 - powf(14.9/num1, 0.286)) (num1 and num3 are the input numbers) 
      A * num3 * (1 - powf(14.9/num1, 0.286)) 
       B * (1 - powf(14.9/num1, 0.286)) 
       B * (1 - powf(C, 0.286)) 
       B * (1 - D) 
       B * (E) 
         F 

只是爲了獲得信息,BEDMAS沒有完全遵循。如果D & M在同一級別,那麼最左邊的將被首先評估,並且A & S的規則也是如此。但是這看起來並不是什麼大不了的,但是當涉及到截斷和舍入小數時,它會創建一個大問題。

a * b/c is calculated as "(a*b)/c" 

a/b * c is calculated as "(a/b) * c" 
+0

因此,任何想法爲什麼答案會不同? – user1930931

+0

如果num1是300,num3是1,xcode給了我62239,並且xcel給了我62205 – user1930931

+0

@ user1930931 1.這不是Xcode來計算的,它是C庫的數學函數。 2.浮點數不準確,可能會出現小的差異,特別是在使用像'exp()'這樣的函數時。 – 2012-12-28 19:59:22