2014-11-06 122 views
0

在我的iOS应用程序中,我从远程服务器接收JSON数据。其中一个字段的值可以是一个双数,比如24.87,或者是一个int数字,比如24. 现在我想在视图中显示数字,作为标签文本,但我总是要得到2位小数位数,为例,如果远程值是24,我想说明24.00 ...将字符串显示为带两位小数的数字

我使用下面的代码来做到这一点:

if ([tarifa_comanda isEqualToString:@"T1"]){ 
     cell.tarifa_label.text = @"T1"; 

     NSNumberFormatter * f = [[NSNumberFormatter alloc] init]; 
     [f setNumberStyle:NSNumberFormatterDecimalStyle]; 
     NSNumber * myNumber = [f numberFromString:[[categorias objectAtIndex:indexPath.row] objectForKey:@"precio1_plato"]]; 
     cell.precio_plato_label.text = myNumber; 

    } 

但我正在逐渐从数量输出错误。这是我得到的标签是一个用蓝色背景:

enter image description here

回答

4

可以通过设置maximumFractionDigits和minimumFractionDigits属性来设置希望格式化程序显示的最大和最小小数位数。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]; 

[formatter setNumberStyle:NSNumberFormatterDecimalStyle]; 
[formatter setMaximumFractionDigits:2]; 
[formatter setMinimumFractionDigits:2]; 

NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.342]]); 
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.3]]); 
NSLog(@"%@", [formatter stringFromNumber:[NSNumber numberWithFloat:25.0]]); 
+0

谢谢@mttcrsp,但是本来的答案是先给出的。 – mvasco 2014-11-06 23:03:07

+1

@mvasco但这是一个更好的答案。使用这种方法让用户开心。 – rmaddy 2014-11-06 23:09:26

+0

@rmaddy,使用此答案我得到以下输出:如果源值是23.76,我得到0.00,如果源值是23,我得到23.00。任何帮助? – mvasco 2014-11-06 23:51:30

1

与 替换你的 “mynumber的”:[NSString的stringWithFormat @ [mynumber的的doubleValue] “%2F。”]

+0

谢谢,但现在它显示一个错误:'NSNumber'没有可见的@interface声明选择器'float'。 – mvasco 2014-11-06 22:53:31

+1

正确的选择符是'floatValue',但是你最好使用'doubleValue',因为在这种情况下'float'会被提升为'double'。 – 2014-11-06 22:56:10

+0

谢谢@robmayoff,它现在有效。 – mvasco 2014-11-06 23:01:54

相关问题