浮点数问题
#include <stdio.h>#include <stdlib.h>
int main()
{
float a;
a=3.1415926535897932;
printf("%.15f",a);
return 0;
}
这个为什么结果是3.141592741012573
而
#include <stdio.h>
#include <stdlib.h>
int main()
{
double a;
a=3.1415926535897932;
printf("%.15lf",a);
return 0;
}
这个结果是正确的3.141592653589793 因为double的精度比float的精度高
我是指的它们能精确到小数点后面的位数 float的精度为7位有效数字
double的精度为16位有效数字
而之所以第一次在小数点之后还能输出15位有效数字是因为你printf限制了输出格式,所以小数点6位以后的数字是系统自己加上去的数字 本帖最后由 风过无痕丶 于 2018-1-22 17:10 编辑
float精度没有double精度高
页:
[1]