實際開發中有時候經常會需要去處理小數點精度問題,如果是整數保留整數,如果有小數則保留不為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()方法來實現