需要一个浮动以标准形式Obj C显示



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

您需要NSNumberFormatter类。具体来说,您希望将numberStyle属性设置为kCFNumberFormatterScientificStyle。类似于:

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

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

这不会强制标准形式,但非常大和非常小的数字都将是标准形式,没有尾随零。看看我大胆的那一点。

  • %g

";双";参数以科学或标准格式输出只有当转换得到的指数小于-4或大于精度时,才使用科学记数法;否则使用标准表示。在科学记数法中,标记指数的"e"是小写的。精度是指所需的有效位数(不一定是小数位数)。后面的零将从结果中删除,只有后面跟有数字的小数点才会出现。

  • %G

与"%"相同g";格式,但在科学记数法中标记指数的"E"是大写的。

float yourfloat = [insert here];
float display = yourfloat;
bool neg = false;
if (display < 0)
{
neg = true;
display *= -1;
}
int e = 0;
while (display < 1 && display > 0)
{
display *= 10;
e++;
}
if (e > 0)
NSLog(@"%f*10^-%d", display * (neg ? -1 : 1), e);
else
NSLog(@"%f", display * (neg ? -1 : 1));

当然,可以用字符串替换NSLog,也可以根据需要替换输出。

最新更新