将数字转换为货币

时间:2015-12-11 18:33:46

标签: ios objective-c nsnumberformatter

我的号码是36381129.我需要号码36.381,129

我尝试了这段代码,但它不起作用。

int number = 36381129;
NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];            
[numberFormatter setNumberStyle: NSNumberFormatterCurrencyStyle];
NSString *numberAsString = [numberFormatter stringFromNumber: [NSNumber numberWithInt:number]];

我给这个号码。

36.381.129,00 $

3 个答案:

答案 0 :(得分:0)

我认为这是巴西真实货币格式。您必须使用浮动值中的价格调用此方法,此方法会将您的字符串返回到您的格式。就像我们通过123456789一样,它会返回123,456,789.00

//Convert Price to Your Price Format
+(NSString*)convertFormat:(float)value{

    NSString * convertedString = [NSString stringWithFormat:@"%.2f", value];

    NSString * leftPart;
    NSString * rightPart;

    if (([convertedString rangeOfString:@"."].location != NSNotFound)) {
        rightPart = [[convertedString componentsSeparatedByString:@"."] objectAtIndex:1];
        leftPart = [[convertedString componentsSeparatedByString:@"."] objectAtIndex:0];
    }

    //NSLog(@"%d",[leftPart length]);
    NSMutableString *mu = [NSMutableString stringWithString:leftPart];

    if ([mu length] > 3) {
        [mu insertString:@"." atIndex:[mu length] - 3];
        //NSLog(@"String is %@ and length is %d", mu, [mu length]);
    }

    for (int i=7; i<[mu length]; i=i+4) {
        [mu insertString:@"." atIndex:[mu length] - i];
        //NSLog(@"%d",mu.length);
    }

    convertedString = [[mu stringByAppendingString:@","] stringByAppendingString:rightPart];

    return convertedString;

}

有关详细信息,请参阅此blog

希望,这就是你要找的东西。任何关注都会回复给我。

答案 1 :(得分:-1)

欢迎来到SO。你的问题很模糊。

货币格式取决于用户的区域设置。通常使用设备的默认语言环境或设置语言环境更好,然后让货币格式化程序创建适合该语言环境的字符串。

如果您设置了硬编码的货币格式,那么某些用户就会出错。 (例如在美国,我们使用&#34;。&#34;作为小数分隔符,逗号作为分组符号。在欧洲大部分地区,他们使用逗号作为小数分隔符,将句点用作分组符号。国家将货币符号放在货币金额的末尾,而其他国家则将货币符号放在开头。)

答案 2 :(得分:-1)

您可以使用此代码:

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterCurrencyStyle];
NSString *groupingSeparator = [[NSLocale currentLocale] objectForKey:NSLocaleGroupingSeparator];
[formatter setGroupingSeparator:groupingSeparator];
[formatter setGroupingSize:3];
[formatter setAlwaysShowsDecimalSeparator:NO];
[formatter setUsesGroupingSeparator:YES];

并以这种方式使用它:

NSString *formattedString = [formatter stringFromNumber:[NSNumber numberWithFloat:rev];

这是一个通用解决方案,可根据其分组分隔符

适用于任何国家/地区

取自:https://stackoverflow.com/a/5407103/2082569