我有一个 NSArray 包含几个看起来像这样的字符串:“291839.0930820”
我想格式化数组中的这些值,以便它们显示在 UITableView 的 detailTextLabel 中,只有 2 位小数:“291,839.09”
我怎样才能做到这一点?
我有一个 NSArray 包含几个看起来像这样的字符串:“291839.0930820”
我想格式化数组中的这些值,以便它们显示在 UITableView 的 detailTextLabel 中,只有 2 位小数:“291,839.09”
我怎样才能做到这一点?
You could try something like this if your array has float values
cell.detailTextLabel.text=[NSString stringWithFormat:@"%.02f", [[array objectAtIndex:index]floatValue]];
要正确格式化数字以使数字在给定用户的域中正确显示,请使用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
。
可以说你的价值是double value = 291839.0930820;
你可以像这样构造一个字符串
NSString *formattedValue = [NSString stringWithFormat:@"%0.2f",value];
将此 formattedValue 分配给您的文本字段/标签。
cell.textLabel.text = formattedValue;