由於后台傳過來的值是float或者double類型,解析之后作為對象放到字典或數組里面,被轉成nsstring或者nsnumber會有一定的誤差,很正常
解決辦法,通過NSNumberFormatter,可以設置NSNumber輸出的格式;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
formatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *string = [formatter stringFromNumber:[NSNumber numberWithInt:123.85999999999]];
NSLog(@"Formatted number string:%@",string);
//枚舉類型
typedef NS_ENUM(NSUInteger, NSNumberFormatterRoundingMode) {
NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling,
NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor,
NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown,
NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp,
NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven,
NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown,
NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp
};
NSNumberFormatterRoundCeiling = kCFNumberFormatterRoundCeiling,//四舍五入,直接輸出124
NSNumberFormatterRoundFloor = kCFNumberFormatterRoundFloor,//保留小數輸出123.86
NSNumberFormatterRoundDown = kCFNumberFormatterRoundDown,//加上了人民幣標志
NSNumberFormatterRoundUp = kCFNumberFormatterRoundUp,//百分號表示
NSNumberFormatterRoundHalfEven = kCFNumberFormatterRoundHalfEven
NSNumberFormatterRoundHalfDown = kCFNumberFormatterRoundHalfDown
NSNumberFormatterRoundHalfUp = kCFNumberFormatterRoundHalfUp