什么是“双”在ceil(双)?

时间:2011-05-12 10:46:20

标签: objective-c cocoa-touch math floating-point double-precision

我有一个号码(比方说,34),我想找到它的下一个倍数。我可以通过以下方式做到这一点:

  1. 将数字除以10
  2. 将其整理为一个整数
  3. 乘以10。
  4. 经过一番研究后,我发现这是Objective C中的代码:

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

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

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

2 个答案:

答案 0 :(得分:5)

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

  1. 使用整数运算,数字/ 10是数字/ 10向下舍入,即3。
  2. ceil(3)= 3
  3. 3 * 10 = 30
  4. 如果你有演员,会发生以下情况:

    1. (double)number = 34.0
    2. 34.0 / 10 = 3.4
    3. ceil(3.4)= 4.0
    4. 4.0 * 10 = 40
    5. 要意识到的重要一点是整数除法总是朝着0。

答案 1 :(得分:4)

它将number转换为double,以便执行浮点除法而不是整数除法。比较1/21.0/2