0

我将计算结果存储在需要打印的 long double 变量中。我需要一种区分大数和小数的方法。例如,如果我想打印tan(pi/4)它应该是 1,对于像 '5*3' 这样的乘法结果,我希望是 15,而不是尾随零。另一方面,我想用科学记数法来表示像基本电荷 1.602176634e-19 这样的小数。这是我尝试过的

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,我之前提到的其余数量将正确显示。

4

0 回答 0