Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/54.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
Objective c NSNumberFormatter货币删除尾随零_Objective C_Currency_Nsnumberformatter - Fatal编程技术网

Objective c NSNumberFormatter货币删除尾随零

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

我想要45.50这样的价格,但我不想要45.00这样的价格。如何避免这种情况?

请执行以下操作:

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]);