Форматирование вывода - PullRequest
5 голосов
/ 29 января 2010

Мне нужно вывести числа в научной нотации так, чтобы перед десятичной запятой всегда был "0"

например. Для числа х = 134,87546 мне нужно произвести вывод 0.134875E03 НЕ 1.348755E02

Кто-нибудь знает, как это сделать?

Заранее спасибо - Шираз.

Ответы [ 3 ]

3 голосов
/ 29 января 2010
int exp = (int)log10(input)+1;
double shifted = input / pow(10.0, exp);
printf("%fE%d", shifted, exp);
0 голосов
/ 29 января 2010

Вы можете исследовать использование библиотеки Boost Format , которая является общей библиотекой форматирования вывода.

0 голосов
/ 29 января 2010
int exponent = floor(log10(num)) + 1;

Затем просто выведите «0», число без десятичных знаков, «E», затем показатель степени.

...