以%f输出单精度数据整数部分出现误差是为什么


#include<stdio.h>
int main()
{
    float x=12345678989;
    float y=0.1234578989;
    printf("x=%f\n",x);
    printf("y=%f\n",y);
    printf("y=%.9f\n",y);
    return 0;
}

运行后,x为12345678848,与原来所赋值不相同

float 是单精度浮点型,换 double 型。