json解析精度問題


由於后台傳過來的值是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 


免責聲明!

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



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