iOS 처리 서버가 반환하는 부동 소수점 데이터

1612 단어 iOSdevelope
iOS 개발에 부딪힌 문제: 서버에 반환된 가격 데이터를 문자열로 직접 저장하여 전시합니다. 서버가 전송한 가격은 9.89입니다. 문자열로 저장한 후에 9.8900000001로 변경됩니다.
처리 프로세스는 다음과 같습니다.
서버에서 반환된 json 데이터는 responseString = {'code': 200000,'msg':'ok','data': [{'id': 34,'name':'보태','서비스Parts': [],'timeFeePrice': 9.89,'timeFeeOriginalPrice': 50.0}}}}
우리는 json 데이터에 부동점 데이터가 있는 것을 보았다 timeFeePrice = 9.89
responseObject = [NSJSONSerialization JSONObjectWithData:data options:self.readingOptions error:&serializationError];
시스템 json을 통해 NSDictionary*responseObject로 전환한 후 responseObject를
code = 200000;
    data =     (
                {
            id = 34;
            name = "\U8865\U80ce";
            serviceParts =             (
            );
            timeFeeOriginalPrice = 50;
            timeFeePrice = "9.890000000000001";
        }
    );
    msg = ok;

인쇄된 timeFeePrice = "9.8900000000001"을 보았습니다.
10진수'9.89'는 2진수 부동점수와 같은float나 더블을 완전히 대표할 수 없기 때문이다.그러므로'반올림 9.89'는 의미가 없다. 왜냐하면 완전히 9.89부동과 같지 않기 때문이다.
부동 소수점 수를 십진 출력 문자열로 바꾸는 정밀도를 지정할 수 있습니다.NSNumberFormatter 또는 printf-format 이미지 "% 를 사용할 수 있습니다.f
따라서 서버가 되돌아오는 부동 소수점 데이터를 처리할 때 소수점 자릿수를 설정해야 한다.
가격 데이터 처리는 서버에서 통일적으로 단위를 사용하고 성형 가격 데이터를 전송하며 클라이언트는%100 전원 처리를 통일하는 것을 권장합니다.

좋은 웹페이지 즐겨찾기