Objective c NSNumberFormatter货币删除尾随零
我想要45.50这样的价格,但我不想要45.00这样的价格。如何避免这种情况?请执行以下操作:Objective c NSNumberFormatter货币删除尾随零,objective-c,currency,nsnumberformatter,Objective C,Currency,Nsnumberformatter,我想要45.50这样的价格,但我不想要45.00这样的价格。如何避免这种情况?请执行以下操作: NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; [formatter setNumberStyle:NSNumberFormatterDecimalStyle]; [formatter setMaximumFractionDigits:2]; [formatter setRoundingMode: NSNumberFor
NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];
[formatter setRoundingMode: NSNumberFormatterRoundUp];
NSString *numberString = [formatter stringFromNumber:[NSNumber numberWithFloat:22.368511]];
NSLog(@"Result...%@",numberString);//Result 22.37
现在像这样:
NSString* CWDoubleToStringWithMax2Decimals(double d) {
NSString* s = [NSString stringWithFormat:@"%.2f", d];
NSCharacterSet* cs = [NSCharacterSet characterSetWithCharacterInString:@"0."];
NSRange r = [s rangeOfCharacterInSet:cs
options:NSBackwardsSearch | NSAnchoredSearch];
if (r.location != NSNotFound) {
s = [s substringToIndex:r.location];
}
return s;
}
输出:
inputString : 12.74
INPUT : 12.00 OR 12.000
NSString *inputString=[NSString string];
inputString=[NSString stringWithFormat:@"%.4g",12.00f];
NSLog(@"inputString : %@ \n\n",inputString);
输出:
inputString : 12.74
INPUT : 12.00 OR 12.000
NSString *inputString=[NSString string];
inputString=[NSString stringWithFormat:@"%.4g",12.00f];
NSLog(@"inputString : %@ \n\n",inputString);
输入字符串:12
更新答案:关于他的评论问题
投入:12.30
我假设他会在一些UI中显示这个值,比如UILabel,…不是为了计算
NSString *inputString=[NSString string];
inputString=[NSString stringWithFormat:@"%.4g",12.30f];
NSArray *arr=[inputString componentsSeparatedByString:@"."];
if ([arr count] >= 2) {
NSString *secondStr=[arr objectAtIndex:1];
if ([secondStr length]<2) {
inputString=[NSString stringWithFormat:@"%@0",inputString];
}
}
NSString*inputString=[NSString];
inputString=[NSString stringWithFormat:@“%.4g”,12.30f];
NSArray*arr=[inputString组件由字符串分隔:@.”;
如果([arr计数]>=2){
NSString*secondStr=[arr objectAtIndex:1];
如果([secondStr length]如果你刚刚经历了一次快速而肮脏的黑客攻击
// Get the price as a string
NSString *priceString = [NSString stringWithFormat:@"%2.2f", priceFloat];
// Trim if needed
if ([priceString hasSuffix:@".00"])
priceString = [priceString substringToIndex:priceString.length-3];
注意:这种方法不适用于本地化内容,即在欧洲,小数点分隔符是逗号,因此您将看到45,00,而不是45.00。我是这样做的:
NSNumber *amount = @(50.5);
NSNumberFormatter *currencyFormat = [[NSNumberFormatter alloc] init];
[currencyFormat setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormat setLocale:[NSLocale currentLocale]];
if (trunc(amount.floatValue) == amount.floatValue) {
[currencyFormat setMaximumFractionDigits:0];
} else {
[currencyFormat setMaximumFractionDigits:2];
}
NSLog(@"%@", [currencyFormat stringFromNumber:amount]);
我喜欢这个简单的解决方案。输出将是$50.50
。对于amount=@(50.0)
将是$50
NSNumber *amount = @(50.5);
NSNumberFormatter *currencyFormat = [[NSNumberFormatter alloc] init];
[currencyFormat setNumberStyle:NSNumberFormatterCurrencyStyle];
[currencyFormat setLocale:[NSLocale currentLocale]];
if (trunc(amount.floatValue) == amount.floatValue) {
[currencyFormat setMaximumFractionDigits:0];
} else {
[currencyFormat setMaximumFractionDigits:2];
}
NSLog(@"%@", [currencyFormat stringFromNumber:amount]);