什么是"双"在ceil(双)?

Ric*_*evy 4 math floating-point cocoa-touch objective-c double-precision

我有一个数字(比方说,34),我想找到它的下一个十的倍数.我可以这样做:

  1. 将数字除以10
  2. 将其四舍五入到一个整数
  3. 乘以10.

经过一番研究后,我发现这是Objective C中的代码:

int number = 34;
int roundedNumber = ceil((double)number/10)*10;
Run Code Online (Sandbox Code Playgroud)

我的问题是:什么是(double)for,为什么删除(double)导致它向下舍入而不是向上?

我从谷歌搜索中了解到,将浮动格式更改为"双精度",但说实话,这对我来说太复杂了.任何人都可以简单解释它在做什么吗?

Nic*_*cue 5

如果您没有演员,则会发生以下情况(如果数字为34).

  1. 使用整数运算,数字/ 10是数字/ 10向下舍入,即3.
  2. ceil(3)= 3
  3. 3*10 = 30

如果你有演员,会发生以下情况:

  1. (双)数= 34.0
  2. 34.0/10 = 3.4
  3. ceil(3.4)= 4.0
  4. 4.0*10 = 40

要实现的重要一点是整数除法总是向0舍入.

  • @Ric:它不是"默认"`int`,你*声明*它`int`. (3认同)