美文网首页
数字转成千分分隔

数字转成千分分隔

作者: AnyObject | 来源:发表于2016-08-11 17:01 被阅读26次

    今天用NSString转float遇到一件非常坑的事,看代码

    NSString * floatString = @"100.1";
    float numb = [floatString floatValue];
    

    我以为numb会是100.1,结果不是,有可能是100.101或者100.091,百思不得其解啊,然后就查查想知道这是为什么。最后总结一下,浮点数的存储本来就是不精确存储,在实际开发中更不能使用float类型的数字进行相等比较判断。但我使用double类型的就可以正确输出数值。

    我是想用这个数值来转换成千分分隔的数字,但系统提供的集中方式有时候不满足我的要求,我们可以自定义一下数字格式

    +(NSString *)floatNumberAddDelimiter:(NSString*)doubleNumString{
        if([doubleNumString rangeOfString:@","].location == NSNotFound){
            NSNumberFormatter *formatter = [[NSNumberFormatter alloc]init];
            //自定义格式
            [formatter setPositiveFormat:@"###,###.00;"];
            return [formatter stringFromNumber:[NSNumber numberWithDouble:[doubleNumString doubleValue]]]; 
        }else{
            return doubleNumString;
        }
    }
    

    这个0和#到底什么意思我也不太理解,但是我自己试验了一下,比如你输入的是字符串是@"1000.1",如果format@"###,###.00;",那么返回的就是@"1,000.10"。如果format@"###,###.##;",那么返回就是@"1,000.1"。剩下的还得大家自己去摸索,如果有知道#和0的区别的朋友,还请留言,大家一起学习。

    相关文章

      网友评论

          本文标题:数字转成千分分隔

          本文链接:https://www.haomeiwen.com/subject/zelssttx.html