我试图作出这样123456.567数是这样123,456.56对美元和123,456.567任何其他货币格式的数字显示千位和十进制分隔
我的代码是:
double fromAgainstJOD = amountVal * fromCurrency.SellRate;
double result = fromAgainstJOD/toCurrency.SellRate;
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setGroupingSeparator:@","];
[formatter setGroupingSize:3];
[formatter setUsesGroupingSeparator:YES];
NSString* formattedString = [formatter stringFromNumber:[NSNumber numberWithDouble:result]];
if (toCurrency.SellRate == 0) {
result = 0;
}
if ([toCurrency.Code isEqualToString:@"USD"]) {
[resultLbl setText:[NSString stringWithFormat:@"%@ %0.2f", toCurrency.Code, result]];
} else {
[resultLbl setText:[NSString stringWithFormat:@"%@ %0.3f", toCurrency.Code, result]];
}
所以我想在resultLbl中为每个货币代码设置千位分数和小数部分的数字。 USD => 2分数 其他货币=> 3分数
浮点数不应该被使用。仅仅因为它在你的测试中有效,并不意味着它总是正确的!请参阅:blog.plataformatec.com.br/2014/09/floating-point-and-currency – Qualcuno
对于任何货币,请勿使用double。使用小数类型,它是正确的格式。双格式会在操作过程中造成金钱流失。 – NCFUSN
这对我工作正常,所以美元的结果是7384.550,但我需要的是显示它为7,384.550 如果我想改变为nsnumber我不能显示它为7,384.550它显示为7,384.55 –