Форматирование очень больших чисел в C - PullRequest
1 голос
/ 27 сентября 2010

Я должен вывести большое число с двойной точностью, используя следующий код:

fprintf(outFile,"           %11.0f   %d O(g(n))",factorialNotRecursive(index,factCount),factValue);

теперь число становится настолько большим, что оно выпадает из выравнивания дальше вниз по список вывода. После того, как он наберет 11 цифр, указанный максимум будет продолжен расти больше. Есть ли способ справиться с этим? Я не уверен, насколько велики входы который будет запущен в этой программе.

1 Ответ

1 голос
/ 27 сентября 2010

Я думаю, что вы не можете сделать это напрямую. Вы должны напечатать в строку, а затем изменить строку.

/* pseudo (untested) code */

value = factorialNotRecursive(index, factCount);
/* make sure buff is large enough (or use snprintf if available) */
n = sprintf(buff, "%11.0f", value);
if (n > 11) {
    buff[10] = '+';
    buff[11] = 0;
}
fprintf(outFile,"           %s   %d O(g(n))", buff, factValue);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...