2012-10-09 82 views
0

我有東西叫做對象 - bombObject,它有一個名爲'blastRadius'的浮動屬性。當'NSLog(@「%。2f」,bombObject.blastRadius);'執行我得到我第一步所做的任何事情,例如100等。但如果執行:'NSLog(@「%2f」,bombObject.blastRadius *(3/7));'我沒有得到blastRadius的3/7,我得到0.00。但是,如果我做'NSLog(@「%。2f」,(bombObject.blastRadius * 3)/ 7);'我得到了所需的答案。objective-c乘法總是等於零?

這是爲什麼?

感謝先進!

+0

在c和類似的語言3/7 = 0 – Dani

回答

3

int/int不會升級到float,所以最終只返回一個整數。 3/7小於1,所以你最終截斷爲0.然後你乘以bombObject.blastRadius 0,這會給你0.00的答案。

爲什麼(bombObject.blastRadius * 3)/ 7工作?因爲bombObject.blastRadius * 3是一個浮點結果;一個float/int將成爲一個浮點數,這就是爲什麼它在這種情況下工作。

+0

謝謝:)。我設法以前從未遇到過這種情況,並且因爲詢問而感到非常不高興。我猜bomb.blastRadius *(3.0/7)也可以。 :) –

1

(3/7)被評估爲一個導致爲零的整數表達式,所以blastRadius *(3/7)結果爲零。

blastRadius * 3被評估爲float(float * int = float),所以結果被評估爲浮點值。

+0

感謝您的答案!你當然是完全正確的,但我給了Surrot嘀嗒,因爲他的措辭更好。感謝參與! :P –

+0

很高興你在照顧,所以它保持樂趣,以幫助! – Tom