我的 NSInteger 看起来像" 8444"。我想以下列方式显示它" 84.44"。 如果整数看起来像" 84455"然后它应该看起来像" 844.55" 。如果是" 85544433"那么它应该看起来像" 855.444.33"。
有什么建议吗?我想使用 NSStringWithFormat ,但我不知道要提供哪些标签。
答案 0 :(得分:2)
您可以根据区域设置修改数字的表示形式,事实上,如果您允许iOS检测正确的区域设置并应用相应的格式会更好,根据区域设置可能会有所不同到http://en.wikipedia.org/wiki/Decimal_mark。
在您的示例中,您使用的是NSInteger,但我猜测最后两个数字是小数部分,如果是这样,您可以这样做并保持语言环境的一致性:
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];
答案 1 :(得分:1)
知道了:
- (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