0
我需要NSNumberFormatter有条件地显示非常大或非常小的数字作为科学记数法。但是,如果数字可以没有,我需要它只有十进制。 6.62e-34好,但4,2E1不好。NSNumberformatter准科学记数法
系统的其它部分,我一直在使用下面的方法解决了这个:
- (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中的第一个文本单元格中,我拖入了数字格式化器。我不知道是否可以定义一些自定义的方法来调用格式,而不是使用这个NumberFormatter。如果我把它拿走,我运行它时会出错。
任何人有一些想法?
您可以使用if-else来相应地检查并显示... –
您是否想要从单个NSNumberFormatter中获取6.62e-32和421? –
您是使用数据源填充表视图,还是使用绑定? – rdelmar