我想使用数字格式化程序来生成我的输出,所以数字会自动格式化为用户的语言环境,但我希望它像printf()中的"%+.1f"一样工作,总是有一个指定的符号。
NSNumberFormatter *nf = [[NSNumberFormatter alloc] init];
nf.numberStyle = NSNumberFormatterDecimalStyle;
nf.maximumFractionDigits = 1;
double val = 3.1234;
label.text = [NSString stringWithFormat: @"XXX %@ XXX", [nf stringFromNumber: [NSNumber numberWithDouble: val]]];
我希望标签在美国出现“XXX +3.1 XXX”,并在任何其他位置出现适当但等效的字符串。我唯一能找到的是setPositiveFormat:
和setPositivePrefix:
。
但是我不想设置格式,因为我不知道如何格式化其他国家的数字;我不知道加号是否用于在阿拉伯语或俄语或我没有想到的某些文化中指定正数。例如,我知道小数点、逗号、空格等在欧洲国家与美国相比都有不同的含义 - +/- 符号也是如此吗?
我目前做的是:
label.text = [NSString stringWithFormat: @"XXX %s%@ XXX", (val < 0) ? "" : "+",
[nf stringFromNumber: [NSNumber numberWithDouble: val]]];
但这假定 '+' 和 '-' 对于所有格式都是正确的。
我敢肯定它必须在那里,因为它是自黑暗时代以来一直在printf()中的标准格式设置...