iOS 当请求到的数据是double类型,会失去精准度,并且去掉小数点后的0

时间:2016-12-20 18:00:08   收藏:0   阅读:2154

首先请求到的数据都会变成字符串,先将字符串转化为double类型

double fdouble = [str doubleValue];

然后再设置小数点后的位数

[NSString stringWithFormat:@"%.1f", fdouble];

 重点:  提供一个NSSing的扩展,传入需要保留的小数位,返回字符串。并且去掉末尾的0.

#import <Foundation/Foundation.h>

@interface NSString (EliminateZero)

//   integer  必传
- (NSString *)eliminateZeroWithDouble:(NSInteger)integer;

@end



#import "NSString+EliminateZero.h"

@implementation NSString (EliminateZero)

- (NSString *)eliminateZeroWithDouble:(NSInteger)integer{
    
    NSString *str = [self copy];
    
    double fdouble = [str doubleValue];
    
    NSString *ftotal;
    switch (integer) {
        case 1:
            ftotal = [NSString stringWithFormat:@"%.1f", fdouble];
            break;
        case 2:
            ftotal = [NSString stringWithFormat:@"%.2f", fdouble];
            break;
        case 3:
            ftotal = [NSString stringWithFormat:@"%.3f", fdouble];
            break;
        case 4:
            ftotal = [NSString stringWithFormat:@"%.4f", fdouble];
            break;
        case 5:
            ftotal = [NSString stringWithFormat:@"%.5f", fdouble];
            break;
        default:
            break;
    }

    while ([ftotal hasSuffix:@"0"]) {
        ftotal = [ftotal substringToIndex:[ftotal length]-1];
    }
    
    if ([ftotal hasSuffix:@"."]) {
        ftotal = [ftotal substringToIndex:[ftotal length]-1];
    }
    
    return ftotal;
    
}


@end

 

 

 

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!