печать чисел с плавающей запятой с использованием научной c нотации в зависимости от размера - PullRequest
0 голосов
/ 28 мая 2020

Я сохраняю результат вычисления внутри длинной двойной переменной, которую мне нужно распечатать. Мне нужен способ отличать большие числа от маленьких. Например, если я хочу напечатать tan(pi/4), он должен быть 1, то же самое для результата умножения, такого как «5 * 3», я хочу быть 15 без конечных нулей. С другой стороны, я хочу представить небольшие числа, такие как элементарный заряд 1.602176634e-19, используя научную нотацию c. Это то, что я пробовал

void print(long double number) {

    long double i;
    long double tmp = ceil(number);

    if (fabs(number-tmp) < 0.00000001)
        number = tmp;

    long double r = modfl(number, &i);

    if (fabs(r) <.0000000000000001 && fabs(r) <.00001)
        printf("%.Lf ", i);

    else if (fabs(r) <.00001)
        printf("%.Lf ", i);

    else printf("%.19Lf ", number);
}

Если я попытаюсь распечатать массу протона 1.6726219236951e-27 с помощью этого кода, я получу 0, остальные количества, которые я упомянул ранее, отображаются правильно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...