iOS:我想添加"。"到NSInteger并将其显示为NSString

时间:2014-04-29 20:38:30

标签: ios nsstring formatting numbers

我的 NSInteger 看起来像" 8444"。我想以下列方式显示它" 84.44"。 如果整数看起来像" 84455"然后它应该看起来像" 844.55" 。如果是" 85544433"那么它应该看起来像" 855.444.33"。

有什么建议吗?我想使用 NSStringWithFormat ,但我不知道要提供哪些标签。

2 个答案:

答案 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