Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:我想补充一句&引用;指向NSInteger并将其显示为NSString_Ios_Nsstring_Formatting_Numbers - Fatal编程技术网

iOS:我想补充一句&引用;指向NSInteger并将其显示为NSString

iOS:我想补充一句&引用;指向NSInteger并将其显示为NSString,ios,nsstring,formatting,numbers,Ios,Nsstring,Formatting,Numbers,我有一个看起来像“8444”的智能手机。我想用下面的方式显示它“84.44”如果整数看起来像“84455”,那么它应该看起来像“844.55”。如果它是“85544433”,那么它应该看起来像“855.444.33” 有什么建议吗?我想使用NSStringWithFormat,但我不知道要提供哪些标记。得到了: - (NSString *)formattedStringFromInteger:(NSInteger)number { NSString *result = @"0";

我有一个看起来像“8444”的智能手机。我想用下面的方式显示它“84.44”如果整数看起来像“84455”,那么它应该看起来像“844.55”。如果它是“85544433”,那么它应该看起来像“855.444.33”

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

得到了:

- (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

明白了:

- (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

明白了:

- (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

明白了:

- (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


您可以根据区域设置修改数字的表示形式,事实上,如果您允许iOS检测适当的区域设置并应用相应的格式,则效果会更好。根据不同的国家,不同的国家可能会有很大的差异

在您的示例中,您使用的是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];

您可以根据区域设置修改数字的表示形式,事实上,如果您允许iOS检测适当的区域设置并应用相应的格式,则效果会更好。根据不同的国家,不同的国家可能会有很大的差异

在您的示例中,您使用的是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];

您可以根据区域设置修改数字的表示形式,事实上,如果您允许iOS检测适当的区域设置并应用相应的格式,则效果会更好。根据不同的国家,不同的国家可能会有很大的差异

在您的示例中,您使用的是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];

您可以根据区域设置修改数字的表示形式,事实上,如果您允许iOS检测适当的区域设置并应用相应的格式,则效果会更好。根据不同的国家,不同的国家可能会有很大的差异

在您的示例中,您使用的是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];

在第三种情况下,您是指855444.33吗?您是否关心组分隔符所在的地区。小数点分隔符是。-855.444,33?没错。我更喜欢国际标准(使用“.”分隔数值,使用“.”表示小数点),但在美国,情况正好相反。因此,我尝试用一种任意方式来本地化显示的数值(以及尝试如何以任何一种方式格式化NSInteger)。这就是
NSNumberFormatter
的作用。像1000这样的数字将根据用户的区域设置显示为
1000
,或
1.000
,或
1000
。在第三种情况下,您的意思是855444.33吗?您是否关心组分隔符所在的区域设置。十进制分隔符是。-即855.444,33?E确切地说,我更喜欢国际标准(使用“.”分隔数值,使用“.”表示小数点),但在美国则相反。因此,我尝试用一种任意的方法来本地化显示的值(以及尝试用任何一种方法格式化NSInteger)。这就是
NSNumberFormatter
的目的。像1000这样的数字将根据用户的区域设置显示为
1000
,或
1.000
,或
1000
。在第三种情况下,您的意思是855444.33吗?您是否关心组分隔符所在的地区。小数点分隔符是。-855.444,33?没错。我更喜欢国际标准(使用“.”分隔数值,使用“.”表示小数点),但在美国,情况正好相反。因此,我尝试用一种任意方式来本地化显示的数值(以及尝试如何以任何一种方式格式化NSInteger)。这就是
NSNumberFormatter
的作用。像1000这样的数字将根据用户的区域设置显示为
1000
,或
1.000
,或
1000
。在第三种情况下,您的意思是855444.33吗?您是否关心组分隔符所在的区域设置。十进制分隔符是。-即855.444,33?E确切地说,我更喜欢国际标准(使用“.”分隔数值,使用“.”表示小数点),但在美国则相反。因此,我尝试用一种任意的方法来本地化显示的值(以及尝试用任何一种方法格式化NSInteger)。这就是
NSNumberFormatter
的目的。像1000这样的数字将根据用户的区域设置显示为
1000
,或
1.000
,或
1000
。这是一个很好的解决方案+1,如果我能给你加2,我会接受另一个,就像使用本地化系统一样。但是我在解决方案中添加了“!=0”检查。很好的解决方案+1,如果我能给你加2