Objective c 需要一个浮点数以标准格式Obj C显示
我有一个应用程序,它正在计算过滤器的值。这些值通常在10^-9值范围内。此时,此计算的值被发送到浮点。是否有一种简单的方法强制以标准形式显示此数字?i、 e x*10^-9,而不是长小数。 关于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,或者根据需要替换输出。您需要该类。具体来说,您
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
- %G
这是一种很好的——objC方式——来自jimpic的pribntf可以工作,但不能。。很好,你可能是对的,但是这个解决方案没有灵活性,所以如果你想要自定义格式,我的解决方案仍然可以:)
NSNumberFormatter *numFormatter = [[NSNumberFormatter alloc] init];
numFormatter.numberStyle = kCFNumberFormatterScientificStyle;
NSString *result = [numFormatter stringFromNumber:[NSNumber numberWithFloat:someFloat]];