C语言精度问题

来源:百度知道 编辑:UC知道 时间:2024/05/10 20:53:13
#include<stdio.h>

main()
{
int a=21;
float b=2.8989748372842;
double c=2.8989748372842;
printf("a=%d\nb=%f\nc=%lf\n",a,b,c);
getch();
}

我用的WIN-TC 结果是
a=21
b=2.898975
c=2.898975
这是怎么回事,double 不是精确到16位有效数字么???

输出的位数并非精度,输出位数是可以设定的
#include<stdio.h>

int main()
{
int a=21;
float b=2.8989748372842;
double c=2.8989748372842;
printf("a=%d\nb=%.16f\nc=%.16lf\n",a,b,c);/*设定精度输出*/
getch();
}

main()
{
double a=21;
double b=28989748372842;
double c=28989748372842;
printf("a=%lf,b=%lf,c=%lf",a,b,c);
getch();
}

精确到16位 不过小数点后最多输出6位 精度问题不必较真 顺其自然