为什么下面的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英寸
2条答案
按热度按时间qqrboqgw1#
您会看到
0.000000
,因为%Lf
会打印固定的小数位数,预设数字为6。在您的情况下,差异为第8位小数位数1,当打印至6 d.p.时会显示为0.000000
。请使用%Le
或%Lg
,或指定更高的精确度:%.8Lf
.请注意最小的标头集。
输出量:
vsdwdz232#
试试这段代码,实际上,你需要向编译器指定小数点后需要多大的精度,这里
.9
将打印小数点后的9位数,你可以根据需要调整这个值;不要超出变量的范围。