dxl1120 发表于 2018-1-22 15:56:33

浮点数问题

#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

BngThea 发表于 2018-1-22 16:09:25

因为double的精度比float的精度高
我是指的它们能精确到小数点后面的位数

必填的用户名 发表于 2018-1-22 16:44:38

float的精度为7位有效数字
double的精度为16位有效数字
而之所以第一次在小数点之后还能输出15位有效数字是因为你printf限制了输出格式,所以小数点6位以后的数字是系统自己加上去的数字

风过无痕丶 发表于 2018-1-22 16:55:05

本帖最后由 风过无痕丶 于 2018-1-22 17:10 编辑

float精度没有double精度高
页: [1]
查看完整版本: 浮点数问题