向上或向下舍入
我有一个浮动,我想要向上或向下舍入到最接近的整数。
例如:
1.4 = 1.0 1.77 = 2.0 1.1 = 1.0
等等…
我在Objective C中这样做,所以我想我需要一个标准的数学函数……附近会不会这样做?
您可以使用math.h
定义的任何标准C库数学函数。 nearbyintf
会起作用,就像roundf
或ceilf
或roundf
ceilf
,取决于你想要什么。
如果您在编辑器中双击它们,Xcode将显示这些函数的文档(UNIX手册页)。
使用
double a = 2.3; double b = round(a);
您可以在math.h中找到圆形和其他数学函数
无论何时舍入,都要考虑负数是否可行。 如果是这样,传统的int(int)(x + 0.5)可能不会做你想要的,圆函数可能会更好。 例如,round(-1.5)= 2。
舍入很容易实现,因为将值转换为int
截断数字的小数部分。 设0 <= x < 1
。 然后,如果您希望所有值在小数部分小于x
向下舍入到最接近的整数,并且如果小数部分大于或等于x
则向上舍入到最接近的整数,那么您只需要计算:
int roundedValueBasedOnX = (int) (value + (1 - x));
例如,如果x = 0.2
,那么我们有:
1) value = 9.4
,应该舍入到10
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.2)) = (int) (9.4 + 0.8) = (int) (10.2) = 10;
2) value = 3.1
,应该舍入到3
。
int roundedValueBasedOnX = (int) (3.1 + (1 - 0.2)) = (int) (3.1 + 0.8) = (int) (3.9) = 3;
如果x = 0.7
,那么我们有:
3) value = 9.4
,应该舍入到9
。
int roundedValueBasedOnX = (int) (9.4 + (1 - 0.7)) = (int) (9.4 + 0.3) = (int) (9.7) = 9;
4) value = 3.8
,应该舍入到4
。
int roundedValueBasedOnX = (int) (3.8 + (1 - 0.7)) = (int) (3.8 + 0.3) = (int) (4.1) = 4;
希望有所帮助!
老派的方法是在数字上加0.5,然后让它截断:
int x = (int) (someFloat + 0.5);
- iOS自定义UIImagePickerController相机裁剪到正方形
- Iphone:滚动时,UITableview中的复选标记会混淆
- 如何从iPhone中裁剪(resize)捕捉图像并从相册中select?
- 如何在iPhone应用程序中获取带有两个小数位的String
- 来自AppDelegate.m的当前ViewController类名的NSLog
- 什么时候子类UITableView?
- iPhone – 敲定苹果模糊的“VerificationController.m”
- AvPlayer当应用程序变为背景时暂停并播放问题
- 如何从URL中下载文件(iOS / Cocoa SDK),其中文件名不是URL的一部分