数字转成千分分隔

今天用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的区别的朋友,还请留言,大家一起学习。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,668评论 19 139
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young阅读 9,452评论 1 10
  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 14,353评论 0 33
  • 汤老,九旬老人,住在老年公寓两年了,有天去体检和他聊起天,某天下午他带我来到他的房子里,这里是老人家另一样的生活天地
    m梦之兰阅读 1,443评论 0 1
  • 想记录一些技术性文档很久了,只是一直没有决心来做这件事,总是借口太忙,不去整理和记录那些曾经做过的事和解决的问题,...
    Richieangel阅读 1,404评论 0 0