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

相关问题