Простое форматирование числа C - PullRequest
2 голосов
/ 18 июля 2010

Это очень простой вопрос c.

Есть ли способ отформатировать число с плавающей точкой для printf так, чтобы оно содержало xx SIGNIFICANT decimals?

Так что я не говорю о, скажем, %5.3f float, но если бы у меня было

float x=0.00001899383

Как бы я вывел 0,0000189, если бы хотел от до первых трех ненулевых десятичных дробей?

1 Ответ

10 голосов
/ 18 июля 2010

"%. 3g" попытается вывести три значащие цифры в научном или фиксированном формате.

у бжг:

Программа

#include <stdio.h>

int main()
{
  double a = 123456789e-15;
  int i = 0;
  for( i=-10; i <= 10; ++i )
  {
    printf("%.3g\n", a );
    a *= 10;
  }
  return 0;
}

выходы

1.23e-07
1.23e-06
1.23e-05
0.000123
0.00123
0.0123
0.123
1.23
12.3
123
1.23e+03
1.23e+04
1.23e+05
1.23e+06
1.23e+07
1.23e+08
1.23e+09
1.23e+10
1.23e+11
1.23e+12
1.23e+13
...