Objective c 需要一个浮点数以标准格式Obj C显示

Objective c 需要一个浮点数以标准格式Obj C显示,objective-c,ios,xcode,floating-point,decimal,Objective C,Ios,Xcode,Floating Point,Decimal,我有一个应用程序,它正在计算过滤器的值。这些值通常在10^-9值范围内。此时,此计算的值被发送到浮点。是否有一种简单的方法强制以标准形式显示此数字?i、 e x*10^-9,而不是长小数。 关于float yourfloat=[插入此处]; 浮动显示=您的浮动; 布尔负=假; 如果(显示0) NSLog(@%f*10^-%d),显示*(负-1:1),e); 其他的 NSLog(@“%f”,显示*(负-1:1)); 当然,可以用字符串替换NSLog,或者根据需要替换输出。您需要该类。具体来说,您

我有一个应用程序,它正在计算过滤器的值。这些值通常在10^-9值范围内。此时,此计算的值被发送到浮点。是否有一种简单的方法强制以标准形式显示此数字?i、 e x*10^-9,而不是长小数。 关于

float yourfloat=[插入此处];
浮动显示=您的浮动;
布尔负=假;
如果(显示<0)
{
负=真;
显示*=-1;
}
int e=0;
while(显示<1&&display>0)
{
显示*=10;
e++;
}
如果(e>0)
NSLog(@%f*10^-%d),显示*(负-1:1),e);
其他的
NSLog(@“%f”,显示*(负-1:1));
当然,可以用字符串替换
NSLog
,或者根据需要替换输出。

您需要该类。具体来说,您需要将
numberStyle
属性设置为
kCFNumberFormatterScientificStyle
。比如:

NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
numFormatter.numberStyle = kCFNumberFormatterScientificStyle;
NSString *result = [numFormatter stringFromNumber:[NSNumber numberWithFloat:someFloat]];

有一个用于准备标准格式字符串的修饰符:
%g
%g

这并不强制标准形式,但非常大和非常小的数字都是标准形式,没有尾随的零。看一看我加粗的那块

  • %g
“double”参数以科学或标准格式输出仅当转换产生的指数小于-4或大于精度时,才使用科学记数法;否则使用标准表示法。使用科学记数法,表示指数的“e”用小写字母表示。精度是指所需的有效位数(不一定是小数位数)。尾随的零将从结果中删除,小数点仅在后跟数字时出现

  • %G
与“%g”格式相同,只是在科学记数法中标记指数的“E”是大写的


这是一种很好的——objC方式——来自jimpic的pribntf可以工作,但不能。。很好,你可能是对的,但是这个解决方案没有灵活性,所以如果你想要自定义格式,我的解决方案仍然可以:)
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
numFormatter.numberStyle = kCFNumberFormatterScientificStyle;
NSString *result = [numFormatter stringFromNumber:[NSNumber numberWithFloat:someFloat]];