OC : NSDecimalNumber
来源:互联网 发布:java object转date 编辑:程序博客网 时间:2024/05/23 10:32
NSDecimalNumber : NSNumber
NSDecimalNumber
-十进制数,继承于NSNumber
。
可以有小数点,可以是正负数。
初始化
【1】
+ (NSDecimalNumber *)decimalNumberWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag;
mantissa:长整形;exponent:指数;flag:正负数。
//12.75NSDecimalNumber *subtotalAmount = [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:-2 isNegative:NO]; //-127500NSDecimalNumber subtotalAmountTwo = [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:2 isNegative:YES];
【2】
+ (NSDecimalNumber *)decimalNumberWithDecimal:(NSDecimal)dcm;
将C语言NSDecimal
类型转成一个十进制数。
//12.75NSDecimalNumber *subtotalAmount = [NSDecimalNumber decimalNumberWithMantissa:1275 exponent:-2 isNegative:NO]; NSDecimal decimalValue = [subtotalAmount decimalValue]; /* 数据结构: (NSDecimal) decimalValue = { _exponent = -2 _length = 1 _isNegative = 0 _isCompact = 1 _reserved = 0 _mantissa = ([0] = 1275, [1] = 0, [2] = 0, [3] = 0, [4] = 0, [5] = 0, [6] = 0, [7] = 0) } */ subtotalAmount = [NSDecimalNumber decimalNumberWithDecimal:decimalValue]; //12.75
如果您只想从float
或int
常量中获取NSDecimalNumber
,请尝试以下操作:
NSDecimalNumber *dn = [NSDecimalNumber decimalNumberWithDecimal:[NSNumber numberWithFloat:2.75f] decimalValue];
【3】
+ (NSDecimalNumber *)decimalNumberWithString:(nullable NSString *)numberValue;
//将字符串转成一个十进制数。
NSDecimalNumber *discountAmount = [NSDecimalNumber decimalNumberWithString:@"-12.74"]; //-12.74 discountAmount = [NSDecimalNumber decimalNumberWithString:@"127.4"]; //127.4
【4】 + (NSDecimalNumber *)decimalNumberWithString:(nullable NSString *)numberValue locale:(nullable id)locale;
这个有点复杂,locale
代表一种格式,就像date
的格式化一样。这里的locale
可以传递两种格式NSDictionary
类型:
NSDictionary *locale = [NSDictionary dictionaryWithObject:@"," forKey:NSLocaleDecimalSeparator]; //以","当做小数点格式NSDecimalNumber *discountAmount = [NSDecimalNumber decimalNumberWithString:@"123,40" locale:locale]; //123.4
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"]; //法国数据格式,法国的小数点是','逗号NSDecimalNumber *discountAmount = [NSDecimalNumber decimalNumberWithString:@"123,40" locale:locale]; //123.4
Property
+(NSDecimalNumber *)zero; //0+(NSDecimalNumber *)one; //1+(NSDecimalNumber *)minimumDecimalNumber;//-3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+(NSDecimalNumber *)maximumDecimalNumber;//3402823669209384634633746074317682114550000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000+(NSDecimalNumber *)notANumber;//非数字,常用于对比,比如://[[NSDecimalNumber notANumber] isEqualToNumber:myNumber];
运算
加
-(NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber;
-(NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
减
-(NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber;
-(NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
乘
-(NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber;
-(NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
除
-(NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber;
-(NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
a的n次方
-(NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power;
-(NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
指数运算
-(NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power;
-(NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power
withBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
四舍五入运算
-(NSDecimalNumber *)decimalNumberByRoundingAccordingToBehavior:(nullable id <NSDecimalNumberBehaviors>)behavior;
比较运算
-(NSComparisonResult)compare:(NSNumber *)decimalNumber;
NSDecimalNumber *discount1 = [NSDecimalNumber decimalNumberWithString:@"1.2"]; NSDecimalNumber *discount2 = [NSDecimalNumber decimalNumberWithString:@"1.3"]; NSComparisonResult result = [discount1 compare:discount2]; if (result == NSOrderedAscending) { NSLog(@"1.2 < 1.3"); } else if (result == NSOrderedSame) { NSLog(@"1.2 == 1.3"); } else if (result == NSOrderedDescending) { NSLog(@"1.2 > 1.3"); }
推荐阅读
如何使用NSDecimalNumber?
https://gxnotes.com/article/101442.html
‘NSDecimalNumber–十进制数’使用方法
http://www.jianshu.com/p/4703d704c953
- OC : NSDecimalNumber
- 关于OC中的小数精确计算---NSDecimalNumber
- NSDecimalNumber使用
- NSDecimalNumber NSNumber 区别 使用方法
- iOS NSDecimalNumber详解
- iOS---Foundation(NSDecimalNumber.h)
- iOS NSDecimalNumber--货币计算
- iOS NSDecimalNumber的基本知识
- 转载{NSDecimalNumber.h}
- NSDecimalNumber的使用
- NSDecimalNumber学习记录
- ‘NSDecimalNumber--十进制数’使用方法
- NSDecimalNumber的用法
- iOS NSDecimalNumber 货币计算 四舍五入
- iOS 笔记 精确计算 NSDecimalNumber
- iOS NSDecimalNumber 货币计算 四舍五入
- NSDecimalNumber的介绍和使用!
- Objective-C精确的货币计算 NSDecimalNumber
- CSDN博客积分规则博客等级博客专家专栏
- Java内存区域与内存溢出异常
- 全排列算法以及求下一组全排列
- Discuz 如何设置SSL类型的SMTP邮箱
- pupwindow列表
- OC : NSDecimalNumber
- 算法题/翻转单词和左旋转字符串
- map容器
- html表格基础
- Centos7安装配置gitlab
- Java垃圾回收机制
- Java中HashMap的实现原理
- emacs快捷键整理
- $(...).bootstraptable is not a function