0

我有一个 NSArray 包含几个看起来像这样的字符串:“291839.0930820”

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

我怎样才能做到这一点?

4

3 回答 3

2

You could try something like this if your array has float values

cell.detailTextLabel.text=[NSString stringWithFormat:@"%.02f", [[array objectAtIndex:index]floatValue]];
于 2013-02-21T20:39:07.847 回答
2

要正确格式化数字以使数字在给定用户的域中正确显示,请使用NSNumberFormatter. 您永远不应将 vstringWithFormat:用于此类目的。

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数组中获取 ,然后将字符串的值作为 a 获取double,最后将 包装double在 a 中NSNumber

于 2013-02-21T20:47:48.487 回答
0

可以说你的价值是double value = 291839.0930820;

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

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

将此 formattedValue 分配给您的文本字段/标签。

 cell.textLabel.text = formattedValue;
于 2013-02-21T20:41:05.190 回答