Я сохраняю результат вычисления внутри длинной двойной переменной, которую мне нужно распечатать. Мне нужен способ отличать большие числа от маленьких. Например, если я хочу напечатать 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, остальные количества, которые я упомянул ранее, отображаются правильно.