4

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

  1. 将数字除以 10
  2. 将其四舍五入为整数
  3. 乘以 10。

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

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

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

我从谷歌搜索中了解到将浮点格式更改为“双精度”,但老实说,这对我来说太复杂了。谁能提供一个简单的解释它在做什么?

4

2 回答 2

5

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

  1. 使用整数运算,number/10 是 number/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 舍入。

于 2011-05-12T10:57:07.180 回答
4

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

于 2011-05-12T10:48:36.667 回答