項目開發(fā)的過程中經(jīng)常會涉及到錢的問題,涉及到錢的地方浙炼,顯示的時候一般是要求精確到分的,就是兩位小數(shù)(例如:¥9.99)弯屈。但是由于系統(tǒng)的原因蜗帜,有的時候顯示的并非預(yù)期的結(jié)果,比如¥99.9顯示成了¥99.9000001资厉。
打印請求數(shù)據(jù)一看,控制臺顯示的就是 99.9000001
宴偿,一開始以為是服務(wù)器返回出錯了湘捎,但是和android的一對比,就會發(fā)現(xiàn)這其實是iOS平臺的解析的問題窄刘。遇到這種情況窥妇,就需要我們自己進行數(shù)據(jù)的轉(zhuǎn)化,以達到預(yù)期的結(jié)果娩践,代碼如下:
NSString的一個類別方法
/** 字符串小數(shù)格式化
@return 小數(shù)字符串 */
- (NSString *)decimalNumberString {
NSString *numberString = [NSString stringWithFormat:@"%lf",[self doubleValue]];
return [NSString stringWithFormat:@"%@",[NSDecimalNumber decimalNumberWithString:numberString]];
}
如果涉及到乘積烹骨,則相乘的結(jié)果也要做如上的轉(zhuǎn)換,否則乘積的結(jié)果還是可能出現(xiàn)小數(shù)點后面很多位小數(shù)的問題材泄。
溫馨提示:計算涉及到金額的地方沮焕,最好使用
double
來接收,不要使用float
或者CGFloat
類型拉宗,后兩者會出現(xiàn)莫名其妙的顯示峦树!