iOS - 数值精度处理之NSDecimalNumber

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS - 数值精度处理之NSDecimalNumber相关的知识,希望对你有一定的参考价值。

参考技术A 首先NSDecimalNumber 继承自 NSNumber,所以自然拥有 NSNumber 的相关属性和方法,需要注意的是 NSNumber 继承自 NSValue 在复杂的数据处理的时候知道这些会快速解决问题。

通过NSDecimalNumber和NSDecimalNumberHandler的使用可以快速的对数据处理。

参数说明:
decimalNumberHandlerWithRoundingMode:对数据处理的方式
scale:小数点后几位

根据官方文档说明, 枚举值分析:
NSRoundPlain, 四舍五入
NSRoundDown, 只舍不入
NSRoundUp, 只入不舍
NSRoundBankers 四舍六入, 中间值时, 取最近的,保持保留最后一位为偶数

对数据四舍五入的封装:

参数说明:
price:要处理的值
position:四舍五入的小数点后几位
只需要改变decimalNumberHandlerWithRoundingMode的枚举就行了。

NSDecimalNumber 内部封装了 对数据处理的方法

例如:两个float类型的计算

其他算法类似。

比较完成之后会返回 NSComparisonResult 值,它是一个枚举类型

例如:

我对上面的方法进行了封装直接调用就好 地址:

这样我们对数据的处理就方便多了。

以上是关于iOS - 数值精度处理之NSDecimalNumber的主要内容,如果未能解决你的问题,请参考以下文章

Java 常用类库 之 大精度数值

JavaScript之解决数值精度丢失indexOfsplittoStringreplacenpm install mj-calculation --save

《Lua程序设计》之 数值

iOS - 处理计算精度要求很高的数据,floatValue,doubleValue等计算不精确问题

004_详解计算机各种语言浮点数运算会存在精度损失原因

Java# Java易错知识点:replaceindexOf数值包装类判断相等数值精度问题字符串拼接字符串判空mapper查询结果处理