#pragma mark- 创建一个十进位数字 /** * 创建一个十进位数字等同与给定的十进位结构 */ + (NSDecimalNumber *)decimalNumberWithDecimal:(NSDecimal)dcm; /** * 创建并返回一个与参数指定的数字相等的十进制数 */ + (NSDecimalNumber *)decimalNumberWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag; /** * 创建并返回一个与参数指定的数字相等的十进制数 */ + (NSDecimalNumber *)decimalNumberWithString:(NSString *)numberValue; /** * 创建并返回一个与参数指定的数字相等的十进制数 * param locale locale代表一种格式,就像date的格式化一样。这里的locale可以传递两种格式 * eg //NSDictionary类型: NSDictionary *locale = [NSDictionary dictionaryWithObject:@"," forKey:NSLocaleDecimalSeparator]; //以","当做小数点格式 //NSLocale类型: NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"fr_FR"]; //法国数据格式,法国的小数点是','逗号 NSDecimalNumber *number = [NSDecimalNumber decimalNumberWithString:@"1,256" locale:locale]; */ + (NSDecimalNumber *)decimalNumberWithString:(NSString *)numberValue locale:(nullable id)locale; +(NSDecimalNumber *)one; +(NSDecimalNumber *)zero; +(NSDecimalNumber *)notANumber; #pragma mark -初始化一个十进制数 - (instancetype)initWithDecimal:(NSDecimal)dcm; - (instancetype)initWithMantissa:(unsigned long long)mantissa exponent:(short)exponent isNegative:(BOOL)flag; - (instancetype)initWithString:(NSString *)numberValue; - (instancetype)initWithString:(NSString *)numberValue locale:(id)locale; #pragma mark -执行运算 - (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber; - (NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber; - (NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber; - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber; - (NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power; - (NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power; - (NSDecimalNumber *)decimalNumberByAdding:(NSDecimalNumber *)decimalNumber withBehavior:(id<NSDecimalNumberBehaviors>)behavior; - (NSDecimalNumber *)decimalNumberBySubtracting:(NSDecimalNumber *)decimalNumber withBehavior:(id<NSDecimalNumberBehaviors>)behavior; - (NSDecimalNumber *)decimalNumberByMultiplyingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id<NSDecimalNumberBehaviors>)behavior; - (NSDecimalNumber *)decimalNumberByDividingBy:(NSDecimalNumber *)decimalNumber withBehavior:(nullable id<NSDecimalNumberBehaviors>)behavior; - (NSDecimalNumber *)decimalNumberByRaisingToPower:(NSUInteger)power withBehavior:(nullable id<NSDecimalNumberBehaviors>)behavior; - (NSDecimalNumber *)decimalNumberByMultiplyingByPowerOf10:(short)power withBehavior:(nullable id<NSDecimalNumberBehaviors>)behavior; #pragma mark -四舍五入 /** * 使用指定的四舍五入行为返回一个十进制数 eg : //NSRoundPlain 四舍五入 NSRoundDown 只舍不入 NSRoundUp 只入不舍 NSRoundBankers 也是四舍五入,如果精确的那位是5,它要看精确度的前一位是偶数还是奇数,如果是奇数,则入,偶数则舍,例如scale=1,表示精确到小数点后一位, NSDecimalNumber 为1.25时,NSRoundPlain结果为1.3,而NSRoundBankers则是1.2 NSDecimalNumberHandler* roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO]; NSDecimalNumber *ouncesDecimal; NSDecimalNumber *roundedOunces; ouncesDecimal = [[NSDecimalNumber alloc] initWithFloat:1.246]; roundedOunces = [ouncesDecimal decimalNumberByRoundingAccordingToBehavior:roundingBehavior] */ - (NSDecimalNumber *)decimalNumberByRoundingAccordingToBehavior:(id<NSDecimalNumberBehaviors>)behavior; 文章来源: NSDecimalNumber