项目方法集合HTools(3)
2018-07-10 本文已影响12人
阿洋12138
这是我在项目中慢慢积累的方法集合,有些是自己写的,有些是觉得网上的写的挺好的就给自己搬过来了。
github地址链接:https://github.com/KingXcode/HTTools
-
NSString+HTBigNums.h
这个分类是进行高精度计算方法的集合
- (NSString * (^)(NSString *number))add; //加
- (NSString * (^)(NSString *number))sub; //减
- (NSString * (^)(NSString *number))multiply; //乘
- (NSString * (^)(NSString *number))divid; //除
/**
传参是无符号整型的字符串
*/
- (NSString * (^)(NSString *number))raisingToPower;//number次方
/**
传参是short字符串
*/
- (NSString * (^)(NSString *number))multiplyingByPowerOf10;//乘以 10的number次方
加法:@"10".add(@"10");
减法:@"10".sub(@"10");
乘法:@"10".multiply(@"10");
除法:@"10".divid(@"10");
混合计算:@"10".add(@"10").sub(@"1").multiply(@"3");
- (NSString *(^)(NSString *))add
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberByAdding:second];
return result.stringValue;
};
}
- (NSString *(^)(NSString *))sub
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberBySubtracting:second];
return result.stringValue;
};
}
- (NSString *(^)(NSString *))multiply
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberByMultiplyingBy:second];
return result.stringValue;
};
}
- (NSString *(^)(NSString *))divid
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberByDividingBy:second];
return result.stringValue;
};
}
- (NSString *(^)(NSString *))raisingToPower
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberByRaisingToPower:second.unsignedIntegerValue];
return result.stringValue;
};
}
- (NSString *(^)(NSString *))multiplyingByPowerOf10
{
return ^(NSString *number) {
NSDecimalNumber *first = [NSDecimalNumber decimalNumberWithString:self];
NSDecimalNumber *second = [NSDecimalNumber decimalNumberWithString:number];
NSDecimalNumber *result = [first decimalNumberByMultiplyingByPowerOf10:second.shortValue];
return result.stringValue;
};
}