我有一个数字(比方说,34),我想找到它的下一个十的倍数。我可以通过以下方式做到这一点:
- 将数字除以 10
- 四舍五入为整数
- 乘以 10。
经过一些研究,我发现这是 Objective C 中的代码:
int number = 34;
int roundedNumber = ceil((double)number/10)*10;
我的问题是:(double)
的作用是什么,为什么删除 (double)
会导致它向下舍入而不是向上舍入?
我通过谷歌搜索了解到将浮点格式更改为“ double ”,但老实说,这对我来说太复杂了。谁能简单解释一下它在做什么?
最佳答案
如果您没有强制转换,则会发生以下情况(如果数字为 34)。
- 使用整数运算,number/10 是 number/10 向下舍入,即 3。
- ceil(3) = 3
- 3*10 = 30
如果您有类型转换,则会发生以下情况:
- (双)数 = 34.0
- 34.0/10 = 3.4
- ceil(3.4) = 4.0
- 4.0*10 = 40
要认识到的重要一点是整数除法总是向 0 舍入。
关于objective-c - "double"在 ceil(double) 中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5976832/