甚至不要丢失十进制值的最后一个零

Don’t lose even last zero of decimal value

目前我的字符串输入如下所示:16904.489324.006806.10

我希望我的客户端输出:16,904.489,324.006806.10

我写了下面的代码:

-(NSString*)methodChangeNumberFormat:(NSString*)strGivenValue {

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];

    NSNumber *nsNumTmp = [numberFormatter numberFromString:strGivenValue];

    NSString *strNumFormatted = [numberFormatter stringFromNumber:nsNumTmp];
    strNumFormatted = [NSString stringWithFormat:@"$%@",strNumFormatted];
    NSLog(@"formattedNumberString: %@", strNumFormatted);

    return strNumFormatted;
}

结果:16,904.489,3246,806.1

但这不是我想要的,请帮助我获得预期的结果。

现在,我正在关注 NSString 的输入。但我已准备好将输入更改为任何数据类型。

您应该设置数字格式化程序的属性。

[numberFormatter setMinimumFractionDigits:2];
[numberFormatter setGroupingSize:3];
[numberFormatter setGroupingSeparator:@","];

有一种数字格式化程序样式可以完成您想要完成的任务。尝试使用 NSNumberFormatterCurrencyStyle.

- (NSString *)methodChangeNumberFormat:(NSString*)strGivenValue {
    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];

    // Set decimal style and read given value
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSNumber *numberFromString = [numberFormatter numberFromString:strGivenValue];

    // Set currency style and produce formatted value
    [numberFormatter setNumberStyle:NSNumberFormatterCurrencyStyle];
    NSString *strNumFormatted = [numberFormatter stringFromNumber:numberFromString];
    NSLog(@"formattedNumberString: %@", strNumFormatted);

    return strNumFormatted;
}

输出:

formattedNumberString: ,904.48
formattedNumberString: ,324.00
formattedNumberString: ,806.10