zoukankan      html  css  js  c++  java
  • iOS 小数点精度问题处理

    实际开发中有时候经常会需要去处理小数点精度问题,如果是整数保留整数,如果有小数则保留不为0的的小数,最大2位小数
    eg:
    2.013 ---> 2.01
    2.0 ---> 2
    2.10 ---> 2.1
    2.149 ---> 2.15
    2.00000000009 ---> 2 (丢失精度的情况经常会遇到)

    如果像以上情况,末尾为0则直接显示整数,如果不为0,则显示有效位小数,最大显示2位

    这里的解决方法是利用fmodf对1取余的方式每次可以获取到小数位
    eg:
    1.0%1 = 0
    1.10%1 = 0.1
    1.00000009%1 = 0.00000009

    综合上面的例子我们可以总结出下面的一个方法,只需要将小数传入即可获取到符合规范的小数位

    - (NSString *)formatFloat:(float)f{
        if (fmodf(f, 1)==0) { //无有效小数位
            return [NSString stringWithFormat:@"%.0f",f];
        } else if (fmodf(f*10, 1)==0) {//如果有一位小数点
            return [NSString stringWithFormat:@"%.1f",f];
        } else {//如果有两位或以上小数点
            return [NSString stringWithFormat:@"%.2f",f];
        }
    }
    

    需要主要的是iOS中的[NSString stringWithFormat:@"%.1f",f]这种方式取得的小数是四舍五入的小数,并且是向上取整的,如果需要向下取整则可以floor()方法来实现

  • 相关阅读:
    hdu 6201 dfs
    Oulipo POJ
    Kitchen Measurements UVALive
    Surf Gym
    hoj 13969 Racing Gems
    分块
    分块学习资料
    Jam's problem again HDU
    树的点分治
    Census UVA
  • 原文地址:https://www.cnblogs.com/qqcc1388/p/10303546.html
Copyright © 2011-2022 走看看