objective-c - "double"在 ceil(double) 中做什么?

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

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

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

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

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

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

我通过谷歌搜索了解到将浮点格式更改为“ double ”,但老实说,这对我来说太复杂了。谁能简单解释一下它在做什么?

最佳答案

如果您没有强制转换,则会发生以下情况(如果数字为 34)。

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

关于objective-c - "double"在 ceil(double) 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976832/

相关文章:

ios - 如何在 Interface builder 的 UIView 中正确添加带有原型(prototype)单元的 UITableView?

ios 解析_user 指针等于用户id?

iphone - 为什么对实例变量使用下划线,而不是其对应的属性?

java - 在java中生成几个随机双数

JavaScript 小数计算

c - 计算平方根的奇怪方法

objective-c - 如何解析不带引号的 JSON 及其 KEY 字符串?

iphone - 使用没有代码的 iOS 模拟器,从 usb 闪存使用

ios - 两个按钮同时按下输入

iphone - 如何在iPhone中存储数百张小图片?