我需要 NSNumberFormatter 有条件地将非常大或非常小的数字显示为科学记数法。但如果数字可以不显示,我只需要十进制。6.62e-34 可以,但 4,2E1 不行。
在系统的其他地方,我使用以下方法解决了这个问题:
- (NSString *) formatNumber: (double) d {
BOOL sci=NO;
double dd = d;
if (dd<0.0) dd=(-d);
if ((dd>0.0) && (dd<1e-3)) sci=YES;
if (dd>1e+8) sci=YES;
if (sci) [nf setNumberStyle:NSNumberFormatterScientificStyle];
else [nf setNumberStyle:NSNumberFormatterDecimalStyle];
return [nf stringFromNumber:[NSNumber numberWithDouble:d]];
}
但是在这个特定的地方,整个事情都是在接口构建器中设置的,绑定到托管对象模型并使用数组控制器对象。在tableview中colum的第一个文本单元格中,我拖入了numberformatter。我不知道是否可以定义一些要调用的自定义方法来进行格式化,而不是使用这个 NumberFormatter。如果我把它拿走,我在运行它时会出错。
有人有什么想法吗?