Skip to content

iOS向上取整、向下取整、四舍五入

Deepin edited this page Apr 23, 2021 · 1 revision

一、场景:

/// 两个整数
NSInteger a = 123;
NSInteger b = 3;

/// 根据 a / b 的结果再向上取整;
/// 若是直接如下写
CGFloat v = a / b;
/// 那么此处不管是用CGFloat还是Double来接受,得到的虽然是小数,但后面小数位都是.00,精度已经缺失,此时再取整,当然数据已经不对了;

/// 原因:两个整数相除,默认是只会保留整数部分,丢失小数部分的,若是希望可以保证精度,则需要至少将a与b其中的一个转为CGFloat或者Double,两个都转最好;
/// 再计算就没有问题了。

以上场景就是对于取整这种需求特别在意的地方;


二、方法:

1.向上取整:

  • float类型: ceilf(float)
  • double类型: ceil(double)
  • long double类型: ceill(long double)

2.向下取整:

  • float类型: floorf(float)
  • double类型: floor(double)
  • long double类型: floorl(long double)

3.四舍五入:

  • float类型: roundf(float)
  • double类型: round(double)
  • long double类型: roundl(long double)

三、举例:

CGFloat a = 4.3;

向上取整:5.0 向下取整:4.0 四舍五入:4.0

CGFloat b = -4.3;

向上取整:-4.0 向下取整:-5.0 四舍五入:-4.0 注意:负数的向上取整和向下取整和正数相反

double c = 5.8;

向上取整:6.0 向下取整:5.0 四舍五入:6.0

Clone this wiki locally