4

我有一個數字(比方說,34),我想找到它的下一個倍數。我可以這樣做:ceil(double)中的「double」是做什麼的?

  1. 除以10
  2. 乘以10

舍入到一個整數位的研究之後,我發現這對於那些在目標C代碼:

int number = 34; 
int roundedNumber = ceil((double)number/10)*10; 

我的問題是:什麼是(double)的,和爲什麼REM (double)導致它下降而不是向上?

我明白從谷歌搜索改變浮法格式爲「雙精度」,但說實話,這對我來說太複雜了。任何人都可以提供它在做什麼的簡單解釋?

回答

5

如果您沒有投射,則會發生以下情況(如果編號爲34)。

  1. 使用整數運算,數/ 10是數/ 10向下舍入,即3.
  2. 小區(3)= 3
  3. 3 * 10 = 30

如果有鑄造,會發生以下情況:

  1. (雙)數= 34.0
  2. 34.0/10 = 3.4
  3. 小區(3.4)= 4.0
  4. 4.0 * 10 = 40

實現的重要一點是整數除法總是舍入到0

+0

Ahhhh我明白了!我認爲它始終是浮動的,但加入'double'使它成爲一種新型的更好的「雙精度浮動」。我沒有意識到它默認爲int。我將你的問題標記爲答案,因爲它比伊格納西奧更像一步一步地對初學者友好的解釋。 – 2011-05-12 11:05:22

+3

@Ric:它不是「默認」的'int',你*聲明它是'int'。 – 2011-05-12 11:40:19

+0

所以,如果我已經宣佈它是'浮動',我會不需要'雙'? – 2011-05-12 11:42:36

4

它將number轉換爲double,以便執行浮點除法而不是整數除法。比較1/21.0/2

+0

34/10 = 3和34.0/10 = 3.4。 3.0的天花板是3. – vakio 2011-05-12 10:54:06

+0

這是他的觀點,我認爲。 ; p – 2011-05-12 11:01:52

相關問題