格式化NSArray的值

时间:2013-02-21 20:29:10

标签: objective-c uitableview nsarray nsnumberformatter

我有一个包含几个字符串的NSArray:“291839.0930820”

我想在数组中格式化这些值,以便它们显示在UITableView的detailTextLabel中,只有2位小数:“291,839.09”

我该如何做到这一点?

3 个答案:

答案 0 :(得分:2)

如果您的数组具有浮点值

,您可以尝试这样的方法
cell.detailTextLabel.text=[NSString stringWithFormat:@"%.02f", [[array objectAtIndex:index]floatValue]];

答案 1 :(得分:2)

要正确设置数字格式,以便为给定用户的域正确显示数字,请使用NSNumberFormatter。你永远不应该使用v stringWithFormat:来达到这个目的。

NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init]:
[formatter setNumberStyle:NSNumberFormatterDecimalStyle];
[formatter setMaximumFractionDigits:2];

NSNumber *val = array[indexPath.row];
NSString *text = [formatter stringFromNumber:val];

<强>更新

我从Juan那里感觉到数组实际上并不包含数字的NSNumber个对象,但它实际上包含数字的NSString表示。如果是这种情况,那么我的答案中的一行需要更改。变化:

NSNumber *val = array[indexPath.row];

为:

NSNumber *val = @([array[indexPath.row] doubleValue]);

这将从数组中获取NSString,然后将字符串的值作为double获取,最后将double包装在NSNumber中。

答案 2 :(得分:0)

假设您的值为double value = 291839.0930820;

你可以像这样构建一个字符串

 NSString *formattedValue = [NSString stringWithFormat:@"%0.2f",value];

将此formattedValue指定给您的textfield / label。

 cell.textLabel.text = formattedValue;