我得到一個NSInteger,看起來像「8444」。我想以下面的方式顯示它「84.44」。 如果整數看起來像「84455」,那麼它應該看起來像「844.55」。如果它是「85544433」,那麼它應該看起來像「855.444.33」。iOS:我想添加「。」到一個NSInteger並將其顯示爲NSString
有什麼建議嗎?我想使用NSStringWithFormat但我不知道要提供哪些標籤。
我得到一個NSInteger,看起來像「8444」。我想以下面的方式顯示它「84.44」。 如果整數看起來像「84455」,那麼它應該看起來像「844.55」。如果它是「85544433」,那麼它應該看起來像「855.444.33」。iOS:我想添加「。」到一個NSInteger並將其顯示爲NSString
有什麼建議嗎?我想使用NSStringWithFormat但我不知道要提供哪些標籤。
可以修改實際上,如果您允許iOS檢測正確的語言環境並應用相應的格式,則會更好根據http://en.wikipedia.org/wiki/Decimal_mark,t可以從一個國家到另一個國家變化很大。
在您的例子中,你使用的是NSInteger的,但我猜測,在最後2個數字是小數部分,如果是的話,你可以這樣來做,並保持現場的一致性:
NSInteger integer = 8444;
// Convert integet to decimal
NSNumber *number = [NSNumber numberWithFloat:((float)integer/100)];
// Create formatter
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
// Conver number to string
NSString *str = [formatter stringFromNumber:number];
到代碼將使用iOS上配置的語言環境,但如果你想迫使一個具體情況,你可以在轉換前將這些行做到這一點:
NSLocale *locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"];
[formatter setLocale:locale];
謝謝!作品像魅力一樣,增加了「!= 0」檢查,正如其他答案中建議的那樣 – mm24
明白了:
- (NSString *)formattedStringFromInteger:(NSInteger)number {
NSString *result = @"0";
if (number != 0) {
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
numberFormatter.numberStyle = NSNumberFormatterDecimalStyle;
numberFormatter.groupingSeparator = @".";
NSString *string = [numberFormatter stringFromNumber:@(number * 10)];
result = [string substringToIndex:string.length - 1];
}
return result;
}
8444 - > 84.44
101 - > 1.01
10100000 - > 101.000.00
0 - > 0
好的解決方案+1,如果我可以給你加2但我不得不接受使用本地化系統的另一個,但是我在解決方案中加入了「!= 0」檢查 – mm24
在第三種情況下,你的意思是855,444.33?你是否關心組分隔符所在的語言環境?和小數點分隔符是。 - 即。 855.444,33?確切地說, – Paulw11
。我更喜歡國際標準(它使用「。」分隔值和「,」爲小數位),但在美國工作方式相反。因此,我試圖有一個任意的方式來本地化顯示的值以及嘗試如何格式化NSInteger) – mm24
這是'NSNumberFormatter'的用途,像1000這樣的數字將顯示爲1,000或1.000或1 000到用戶的地區 – rmaddy