??當(dāng)商城等相關(guān)需要顯示價(jià)格相關(guān)的需求產(chǎn)生骤视,我們便面臨著如何簡(jiǎn)潔又準(zhǔn)確地把一串number數(shù)據(jù)轉(zhuǎn)化成1,234.00這樣的顯示問題。
??當(dāng)然,最簡(jiǎn)單粗暴的方式锐墙,便是for循環(huán)自己寫邏輯,判斷是否存在小數(shù)點(diǎn)长酗,判斷每三位插入一個(gè)逗號(hào)符溪北。這樣的方式自然是可以的,只是會(huì)顯得比較傻一點(diǎn)夺脾,一般我會(huì)把這種方式當(dāng)成最后的備選方案之拨。
??系統(tǒng)還是很強(qiáng)大的,很貼心的為我們提供了便捷的轉(zhuǎn)格式的方法咧叭,即NSNumberFormatter這個(gè)類蚀乔。其實(shí),看到Formatter這個(gè)字樣就很熟悉了菲茬,我們可能對(duì)這個(gè)不熟悉吉挣,但一定對(duì)日期格式轉(zhuǎn)換很熟悉。沒錯(cuò)生均,只要我們?cè)O(shè)定要我們要的顯示格式听想,將格式設(shè)置好,這個(gè)功能便可以將number型的值轉(zhuǎn)化成任何我們想要的格式马胧。
??舉個(gè)簡(jiǎn)單的例子:
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
[numberFormatter setPositiveFormat:@"###,##0.00;"];
NSString *formattedNumberString = [numberFormatter stringFromNumber:money];
@"###,##0.00;" --- 這個(gè)格式的意思是:整數(shù)部分從右往左每三位添加一個(gè)逗號(hào)汉买,數(shù)據(jù)始終保留兩位小數(shù)
即:money = 123456 formattedNumberString = 123,456.00
@"#,###.##;" --- 這個(gè)格式的意思是:整數(shù)部分從右往左每三位添加一個(gè)逗號(hào),數(shù)據(jù)最多保留兩位小數(shù)
即:money = 123456 formattedNumberString = 123,456
即:money = 123456.0 formattedNumberString = 123,456
即:money = 123456.1 formattedNumberString = 123,456.1
即:money = 123456.12 formattedNumberString = 123,456.12
即:money = 123456.123 formattedNumberString = 123,456.12
??當(dāng)然系統(tǒng)還提供了便捷的屬性設(shè)置佩脊,可直接設(shè)置格式
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
NSString *formattedNumberString = [numberFormatter stringFromNumber:money];
NSNumberFormatterDecimalStyle --- 這個(gè)格式的意思是:整數(shù)部分從右往左每三位添加一個(gè)逗號(hào)蛙粘,數(shù)據(jù)最多保留三位小數(shù)垫卤,和上述@"#,###.##;"和效果相似,沒有小數(shù)的話會(huì)直接顯示成整數(shù)出牧,但是默認(rèn)小數(shù)最多三位
??具體每個(gè)枚舉類型對(duì)應(yīng)這什么樣的格式穴肘,官方文檔上也給出了詳細(xì)的解釋,并附上了具體例子舔痕。(查詢流程:點(diǎn)擊Xcode->選擇上方的Help->選擇下拉框中的Developer Documentation->搜索框搜索NSNumberFormatterStyle->選擇具體語言(Object-c或Swift等)回車即可)
??這樣子我們就能完美解決數(shù)字顯示格式的問題评抚,而不至于一遍遍自己去用for循環(huán)的方式寫邏輯解決問題了,快速便捷好有效伯复!