后台返回float类型数据8.2,实际用AFN的json解析后得到8.1999999999,该怎么处理呢?

开发中处理处理价格金额问题, 后台经常返回float、double类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:

处理精度有关的数据先把数据转成double类型

此处我是以string方式接收的,直接添加NSString的分类,修正方法贴出来如下:

+(NSString )reviseString:(NSString )string{
/* 直接传入精度丢失有问题的Double类型*/
double conversionValue = (double)[string floatValue];
NSString *doubleString = [NSString stringWithFormat:@"%lf", conversionValue];
NSDecimalNumber *decNumber = [NSDecimalNumber decimalNumberWithString:doubleString];
return [decNumber stringValue];
}
这样返回的就是修正过精度的数据了,因为个人需要所以转成了string类型

服务器返回的数据,用数据类型接收(int,NSNumber)?

NSNumber

字典转模型时,关于数字的赋值的问题和解决办法.

定义模型类时,当要保存字符串时,使用 NSString.

// 当 messageId 为字符串的时候,使用 NSString 接收
@property (nonatomic,copy) NSString *messageId;
问题 定义模型类时,当要保存数字时,使用 int.
注意 : int类型的变量,不能赋值为nil(空对象)或者null(空值),若强行赋值会崩溃.
// 问题 : 字典转模型时,当给 int类型的 messageId 赋空值时就会崩溃.
@property (nonatomic,assign) int messageId;
解决 保存数字除了 int 以外 还有 NSNumber.
NSNumber 既能保存空值,又能保存数字.
// 解决 : 使用 NSNumber 既能保存空值,又能保存数字
@property (nonatomic,strong) NSNumber *messageId;

json 解析double类型多出几位小数,利用NSDecimalNumber修复 , 服务器返回的数据,用数据类型接收(int,NSNumber)?的更多相关文章

  1. double类型四舍五入保留两位小数

    double x; int(x * 100 + 0.5) /100; 通过int强制转换截去后面的位数,实现两位小数保存, 由于强制转换直接把后面的信息截去,所以要想五入需要加0.5.

  2. Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

    Oracle 远程访问配置   服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 ...

  3. Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作

    Decimal类型截取保留N位小数向上取Decimal类型截取保留N位小数并且不进行四舍五入操作 封装静态方法 public class DecimalHelper { /// <summary ...

  4. Android(java)开发之将double类型,强制保留到小数点后两位解决方法。

    作者:程序员小冰,CSDN博客:http://blog.csdn.net/qq_21376985 前提:当我们进行double数据类型与double进行运算的时候,可能会遇到 得到小数点后好多位,但是 ...

  5. C# json解析字符串总是多出双引号

    json好久没用了,今天在用到json的时候,发现对字符串做解析的时候总是多出双引号. 代码如下: string jsonText = "{'name':'test','phone':'18 ...

  6. JSON解析关联类型发生死循环 There is a cycle in the hierarchy!

    解决办法是忽略掉关联类型的数据,使用jsonConfig进行配置,代码如下: JsonConfig jsonConfig = new JsonConfig();  //建立配置文件 jsonConfi ...

  7. json解析数组类型的数据

    //微信里一个检测是否有发送模版消息的权限的方法//此处的openid代表的微信用户openid,templateId代表的是模版消息idpublic boolean checkIsSendTempM ...

  8. Android double输出时保留两位小数

    方法1,在代码中操作 this.totalTextview = (TextView) findViewById(R.id.package_total_money); double decimalBal ...

  9. double类型如何保留2为小数

    double d=12.2121;string str = d.ToString("F2"); double x = 29.982;Console.WriteLine(x.ToSt ...

随机推荐

  1. 简单地理解HTTPS 转

    原文地址:http://www.nowamagic.net/librarys/veda/detail/2394 我们都知道HTTPS能够加密信息,以免敏感信息被第三方获取.所以很多银行网站或电子邮箱等 ...

  2. SpringBoot入门学习(二)

    第一讲我们已经讲解了入门Demo,这一讲我们主要讲解包含以下内容 项目内一些属性配置 自定义属性配置 ConfigurationProperties配置 (1)第一个工程创建的时候会自动在工程下创建a ...

  3. Java基础知识---continue

    一:java概述: 1991 年Sun公司的James Gosling等人开始开发名称为 Oak 的语言,希望用于控制嵌入在有线电视交换盒.PDA等的微处理器: 1994年将Oak语言更名为Java: ...

  4. HDFS只支持文件append操作, 而依赖HDFS的HBase如何完成数据的增删改查

    转:http://www.th7.cn/db/nosql/201510/135382.shtml 1. HDFS的文件append功能 早期版本的HDFS不支持任何的文件更新操作,一旦一个文件创建.写 ...

  5. JavaScript常用工具方法封装

    因为工作中经常用到这些方法,所有便把这些方法进行了总结. JavaScript 1. type 类型判断 isString (o) { //是否字符串 return Object.prototype. ...

  6. Jquery2 基础核心

    学习要点: 1.代码风格 2.加载模式 3.对象互换 4.多个库之间的冲突 本节简单的介绍一下jQuery 一些核心的问题. 一.代码风格 在jQuery程序中,不管是页面元素的选择.内置的功能函数, ...

  7. 读取Jar中的json文件

    现在操作json的jar 都是用的fastjson, 如果需要读取的json文件不在jar包里面,则可以这样获取到: String path = this.getClass().getClassLoa ...

  8. maven打包pom.xml备忘

    打包生成可执行jar 包 POM.XML <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi=" ...

  9. integration asp.net web api with autofac and owin

    There is an example project showing Web API in conjunction with OWIN self hosting https://github.com ...

  10. HTTP协议中的COOKIE机制简单理解

    1.为什么会有COOKIE这种机制 首先一种场景, 在一个网站上面, 我发起一次请求,那服务器怎么知道我是谁?是谁发起的这次请求呢, HTTP协议是无状态的协议, 浏览器的每一次请求,服务器都当做一次 ...