小数点后两位处理

2018-09-30  本文已影响0人  随心_追梦

好长时间没有写文章了,今天放假,趁着有空,给大家分享个小工具类
一般我们写电商类型App的时候,都有价格小数点后两位的处理,之前我是写的fload类型取 .2f ,后来测试,会有精度问题,所以总结了下面的方法。

我写了一个字符串的扩展,方法如下:
///字符串小数点后两位
- (NSString *)geTwoDecimalString {
    
    NSArray *arr = [self componentsSeparatedByString:@"."];
    if (arr.count == 1) {
        return [NSString stringWithFormat:@"%@.00",self];
    }
    if (arr.count > 2) {
        return self;
    }
    
    NSString *str = [arr lastObject];
    if (str.length == 1) {
        return [NSString stringWithFormat:@"%@0",self];
    }
    
    else if (str.length == 2) {
        return self;
    }
    else {
        NSDecimalNumberHandler *roundingBehavior = [NSDecimalNumberHandler decimalNumberHandlerWithRoundingMode:NSRoundPlain scale:2 raiseOnExactness:NO raiseOnOverflow:NO raiseOnUnderflow:NO raiseOnDivideByZero:NO];
        NSDecimalNumber *aDN = [[NSDecimalNumber alloc] initWithString:self];
        NSDecimalNumber *resultDN = [aDN decimalNumberByRoundingAccordingToBehavior:roundingBehavior];
        return [NSString stringWithFormat:@"%@",resultDN];
    }
}

欢迎大家指教!!!

上一篇 下一篇

猜你喜欢

热点阅读