OC、swift数据JSON序列化后,浮点型数据丢失的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了OC、swift数据JSON序列化后,浮点型数据丢失的问题相关的知识,希望对你有一定的参考价值。

参考技术A 出现的问题:服务后端定义的数据类型为float、double时,前端进行序列化时数据精度丢失。

要么在后端处理,定义为string类型。要么在前端处理,将float、double转化为string!!

注意:在序列化前调用此方法!!

+ (NSString *)doubleConvertString:(NSString *)source



    NSString *targetStr = [NSString stringWithFormat:@"%@",source];

    if (source.length == 0)

   

        return targetStr;

   

    NSUInteger index = 0;

    NSString *p = [targetStr substringToIndex:1];

    NSString *rStr = p;

    NSString *lChar = p;

    NSString *llid = nil;

    BOOL inserted = false;

    NSArray *tarry = @[@"0",@"1",@"2",@"3",@"4",@"5",@"6",@"7",@"8",@"9"];

    while (index < targetStr.length-1)

   

        index++;

        NSString *currChar = [targetStr substringWithRange:NSMakeRange(index, 1)];

        BOOL cf = [tarry containsObject:currChar];

        if ([lChar isEqualToString: @":"] && cf && [llid isEqualToString:@"\""])

       

            inserted = true;

            rStr = [rStr stringByAppendingString:@"\""];

            llid = @"";

       

        else if (inserted && ([currChar isEqualToString: @""] || [currChar isEqualToString: @","]))

       

            inserted = false;

            rStr = [rStr stringByAppendingString:@"\""];

       

        rStr = [rStr stringByAppendingString:currChar];

        if (currChar.length > 0 && ![currChar isEqualToString:@" "])

       

            if ([currChar isEqualToString:@"\""])

           

                llid = currChar;

           

            else if (![currChar isEqualToString:@":"])

           

                llid = @"";

           

            lChar = currChar;

       

   

    return rStr;

以上是关于OC、swift数据JSON序列化后,浮点型数据丢失的问题的主要内容,如果未能解决你的问题,请参考以下文章

swift学习第二天:swift中的基本数据类型

fastjson 浮点型数据序列化后变成科学记数格式

iOS开发-OC语言 oc数据类型

OC数据类型

《从零开始学Swift》学习笔记(Day 13)——数据类型之整型和浮点型

OpenCVSharp_保存浮点型Mat数据