簡體   English   中英

使用已經具有小數和千位分隔符的NSNumberFormatter格式化數字

[英]Formatting number with NSNumberFormatter that already has decimals and thousand seperators

我有以下數字格式:

100000,459
100000459
100.000
100.000,59
100.000.000,39

該數字隨用戶輸入值而變化。 對於每個增加的值,我需要使用NSNumberFormatter重新格式化數字。 問題在於該號碼已經存在。 和,格式化程序似乎無法正確處理這些問題。 結果如下:

100 000,00
100 000 459,00
100,00
100,00
100,00

例如,我希望100000,459成為100000459。

我現在使用的代碼:

NSNumber *amount = [NSNumber numberWithInt:[string intValue]];
NSNumberFormatter *currencyFormatter = [[[NSNumberFormatter alloc] init] autorelease];
[currencyFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"nb_NO"];
[currencyFormatter setLocale:locale];
NSString *commaString = [currencyFormatter stringForObjectValue:amount];

如何格式化已經格式化的數字?

在最后一行中,您嘗試格式化字符串而不是數字。 嘗試這個:

NSString *commaString = [currencyFormatter stringFromNumber:amount];

這是一個很好的參考

我已經看過該特定參考。 它與我的問題不同,因為在我的情況下,格式化時可能已經有小數。

NSNumberFormatter數字格式化為字符串表示形式,並且需要數字的正確表示形式才能將其格式化。 通過代碼示例的外觀,您正在為格式化程序提供整數值,這就是為什么要獲取輸出的原因。 如果string = @"100000,459" [string intValue]會為您提供100000 這就是為什么格式化程序的輸出為100 000,00

您需要做的是首先將字符串轉換為雙重表示形式。 這可以通過使用NSScanner來實現。 您只需要確保以正確的語言環境掃描數字,即可正確檢測到千位分隔符。 您的第一個字符串可以通過以下方式轉換為雙精度:

NSScanner *scanner = [NSScanner scannerWithString:@"100000,459"];
[scanner setLocale:locale];
double val;
[scanner scanDouble:&val];
NSNumber *amount = [NSNumber numberWithDouble:val];

如何正確處理我不知道的數千個分隔符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM