iOS 四舍五入保留两位小数

通常我们四舍五入输出可能你会用NSString stringWithFormat函数%.2f方式,但是这个四舍五入有时可能不是四舍五入,而是五舍六入。其实有更精确的四舍五入方式。


先说一下最后确定使用的方法:(四舍五入,保留两位小数)

-(float)roundFloat:(float)price{

    return roundf(price*100)/100;

}

(保留1位小数100改为10,以此类推)

下面再说说这个曲折的过程,首先我想到的是用ios里面自带的round方法,

-(float)roundFloat:(float)price{

    return roundf(price);

}

但是如下举例

float test = 23.625;

float test2 = 23.6250;

float test3 = 23.6251;

test = [self roundFloat:test];

test2 = [self roundFloat:test2];

test3 = [self roundFloat:test3];

    

NSLog(@"test:%.2f",test);

NSLog(@"test2:%.2f",test2);

NSLog(@"test3:%.2f",test3);

得出结果:

test:24.00

test2:24.00

test3:24.00


很显然不是我想要的效果,经过改进便是如下结果,

-(float)roundFloat:(float)price{

    return roundf(price*100)/100;

}


有人说此方法不知在什么数据情况下会不准,还有个更保险的方法:

-(float)roundFloat:(float)price{

    return (floorf(price*100 + 0.5))/100;

}



iOS中round/ceil/floorf函数略解

extern float ceilf(float);

extern double ceil(double);

extern long double ceill(long double);


extern float floorf(float);

extern double floor(double);

extern long double floorl(longdouble);


extern float roundf(float);

extern double round(double);

extern long double roundl(longdouble);


round:如果参数是小数,则求本身的四舍五入。
ceil:如果参数是小数,则求最小的整数但不小于本身.(向上取整)
floor:如果参数是小数,则求最大的整数但不大于本身. (向下取整)

Example:如何值是3.4的话,则

3.4 -- round 3.000000

    -- ceil 4.000000

    -- floor 3.00000



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值