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()方法來實現


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM