C语言float类型 的除法为什么会出现误差

来源:百度知道 编辑:UC知道 时间:2024/06/04 12:37:20
#include<iostream>
using namespace std;
int main()
{
float p[2]={1.0f,2.2f};
float c=0.0;
c=(p[1]+p[2])/2;
printf("%.8f",c);
}

结果显示1.10000002
这一点误差是从哪里产生的呢?
应该怎么解决??
请问一下double型的有效数字是多少?

float p[2]={1.0f,2.2f};

c=(p[1]+p[2])/2;
没有 p[2], 只有 p[0],p[1]

float 有效数字 7到8位

随机产生的,float只有前七位是有效数字,你要显示小数点后八位,本来就没有意义!