使用格式列出数组中的浮点数

Listing floats from array with format

我有一个包含浮点数的 NSMutableArray。我可以以特定格式显示一个浮点数或不带格式显示所有浮点数,但我无法弄清楚如何同时执行这两种操作。我首先将浮点数包裹在 NSNumber 中,以便可以将其添加到数组中:

NSMutableArray *array = [[NSMutableArray alloc] init];
NSNumber *num = [NSNumber numberWithFloat:5.10f];
[array addObject:num];

NSNumberFormatter 用于格式化要在 textView 中显示的数字。这是我用来执行此操作的代码:

 for (NSNumber *aNumber in array) {

self.textView.text = [NSString stringWithFormat:@"%@" 
[NSNumberFormatter localizedStringFromNumber:aNumber 
numberStyle:NSNumberFormatterCurrencyStyle]];

}

这里的明显问题是每次循环运行时文本都被替换为数组中的数字,而不是列出所有这些。

所以,我做了更多的研究,发现 componentsJoinedByString:

 self.textView.text = [NSString stringWithFormat:@"%@", [array componentsJoinedByString:@", "]];

这很适合列出它们,但缺少格式样式:例如,它将 5.10 显示为我不想要的 5.1。我试图以某种方式将它们组合起来,但它没有用,我也尝试 stringByAppendingString 在循环中使用格式化程序,但那是一团糟,根本不起作用。

您正在替换 textView 中的文本,而不是追加..

 for (NSNumber *aNumber in array) {
    NSString *result = [NSNumberFormatter localizedStringFromNumber:aNumber 
numberStyle:NSNumberFormatterCurrencyStyle];

    if (aNumber == array.firstObject && !self.textView.text.length) {
        self.textView.text = result;
    }
    else {
        self.textView.text = [NSString stringWithFormat:@"%@, %@", self.textView.text, result];
    }
}