C -带多个小数的数的减法

t2a7ltrp  于 2022-12-02  发布在  其他
关注(0)|答案(2)|浏览(98)

为什么下面的C代码输出“Difference:0.000000”?我在大学的一个任务中需要使用许多小数进行计算,但我不明白这一点,因为我是C语言编程的新手。我使用的类型正确吗?提前感谢。

#include <stdio.h>
#include <time.h>
#include <stdlib.h>
#include <math.h>

int main() {

long double a = 1.00000001;
long double b = 1.00000000;
long double difference = a-b;

printf("Difference: %Lf", difference);

}

我已经尝试了该代码,我期待得到的结果:“区别:0.00000001英寸

qqrboqgw

qqrboqgw1#

您会看到0.000000,因为%Lf会打印固定的小数位数,预设数字为6。在您的情况下,差异为第8位小数位数1,当打印至6 d.p.时会显示为0.000000。请使用%Le%Lg,或指定更高的精确度:%.8Lf .

#include <stdio.h>

int main(void)
{
    long double a = 1.00000001;
    long double b = 1.00000000;
    long double difference = a - b;

    printf("Difference: %Lf\n", difference);
    printf("Difference: %.8Lf\n", difference);
    printf("Difference: %Le\n", difference);
    printf("Difference: %Lg\n", difference);
    return 0;
}

请注意最小的标头集。
输出量:

Difference: 0.000000
Difference: 0.00000001
Difference: 1.000000e-08
Difference: 1e-08
vsdwdz23

vsdwdz232#

#include <stdio.h>

int main() {
    
    long double a = 1.000000001;
    long double b = 1.000000000;
    long double difference = a-b;
    
    printf("Difference: %.9Lf\n", difference);

}

试试这段代码,实际上,你需要向编译器指定小数点后需要多大的精度,这里.9将打印小数点后的9位数,你可以根据需要调整这个值;不要超出变量的范围。

相关问题