Giter Site home page Giter Site logo

丢失精度 about mjextension HOT 16 CLOSED

codermjlee avatar codermjlee commented on May 11, 2024
丢失精度

from mjextension.

Comments (16)

CoderMJLee avatar CoderMJLee commented on May 11, 2024

你的模型属性是int类型么?那肯定会丢失的。你试试把模型属性定义为double类型或者NSNumber类型

from mjextension.

wanzhu159 avatar wanzhu159 commented on May 11, 2024

杰哥,后台给的数据用NSJSONSerialization转成字典后,字典里面的key = latitude、 value值类型是double(比如@"latitude":(double)39.828282),我的模型里面latitude属性是nsstring.转完之后就变成一个@"39"了,是我没看清楚后台来的数据类型。%>_<%

from mjextension.

CoderMJLee avatar CoderMJLee commented on May 11, 2024

改为double或者NSNumber就好了吧?

from mjextension.

CoderMJLee avatar CoderMJLee commented on May 11, 2024

你下载最新框架代码试试,你用NSString应该也没问题了,我增加了个小功能

from mjextension.

wanzhu159 avatar wanzhu159 commented on May 11, 2024

我没改,让后台改了。我下午一点多下的最新的。😊

from mjextension.

CoderMJLee avatar CoderMJLee commented on May 11, 2024

几分钟前我改了代码。现在不管服务器是什么类型,你写NSString都OK了,哈哈

from mjextension.

wanzhu159 avatar wanzhu159 commented on May 11, 2024

恩,我去。拉下来研究下。顶起来!!!!

from mjextension.

youngcao2015 avatar youngcao2015 commented on May 11, 2024

杰哥,精度丢失问题(NSJSONSerialization)依然存在哦,服务端返回的是99.99,我用NSString 接收,结果是99.98999999999999

from mjextension.

SuperDannyDeveloper avatar SuperDannyDeveloper commented on May 11, 2024

我也出现了
服务器返回:"deposit": 78.400,
结果转成模型就变成 deposit = "78.40000000000001";

from mjextension.

wangpeng-fei avatar wangpeng-fei commented on May 11, 2024

杰哥,精度丢失问题(NSJSONSerialization)依然存在哦,服务端返回的是99.99,我用NSString 接收,结果是99.98999999999999 在value = [value description] 转的时候就丢失了

from mjextension.

shijinliang avatar shijinliang commented on May 11, 2024

服务端返回小数,用NSString接收,结果出现一堆99999,value = [value description] 转的时候就丢失精度,这个问题现在有解决方案吗?

from mjextension.

kinarobin avatar kinarobin commented on May 11, 2024

@shijinliang 用NSString 接收,不应该就是原始的的值吗?怎么会丢失呢,贴段你的代码看看呢?

from mjextension.

shijinliang avatar shijinliang commented on May 11, 2024

@kinarob
定义的时候是字符串@Property (nonatomic,copy) NSString *price;
但是服务端返回的是数值类型,比如9.2,不是"9.2",这个时候模型转换就会给price赋值为9.1999999999,跟踪了代码发现是mj转换的时候丢失了精度,value是NSNumber,但是用NSString接收,value = [value description]; 这句代码转换引起了精度丢失,

if (propertyClass == [NSString class]) {
                    if ([value isKindOfClass:[NSNumber class]]) {
                        // NSNumber -> NSString
                        value = [value description];
                    } else if ([value isKindOfClass:[NSURL class]]) {
                        // NSURL -> NSString
                        value = [value absoluteString];
                    }
                }

from mjextension.

kinarobin avatar kinarobin commented on May 11, 2024

@wanzhu159 你用NSNumber 或者 NSDecimal 转试试呢?

from mjextension.

shijian123 avatar shijian123 commented on May 11, 2024

@kinarob
定义的时候是字符串@Property (nonatomic,copy) NSString *price;
但是服务端返回的是数值类型,比如9.2,不是"9.2",这个时候模型转换就会给price赋值为9.1999999999,跟踪了代码发现是mj转换的时候丢失了精度,value是NSNumber,但是用NSString接收,value = [value description]; 这句代码转换引起了精度丢失,

if (propertyClass == [NSString class]) {
                    if ([value isKindOfClass:[NSNumber class]]) {
                        // NSNumber -> NSString
                        value = [value description];
                    } else if ([value isKindOfClass:[NSURL class]]) {
                        // NSURL -> NSString
                        value = [value absoluteString];
                    }
                }

最后怎么解决的?让后台把数值类型变成字符串吗?

from mjextension.

wolfcon avatar wolfcon commented on May 11, 2024

Duplicate of #572

from mjextension.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.