小数点后第四位为什么不能正常输出,if条件不成立为什么能正常输出呀

问题遇到的现象和发生背景 我想让这个程序输出小数点后四位分别是多少,但是小数点后第四位有时候能正常输出,有时候和第三位一样,还有我输入一个不在if条件里的数,为什么还是能输出呀,如下图。大一新生导师留的qwq.(因有重复词汇f,所以改了一下下,和照片有一点点不一样。)
用代码块功能插入代码,请勿粘贴截图/该程序的目的是输入一个大于1000.0小于10000.0的数,输出个十百千小数点后四位分别是什么/

#include
int main()
{
int a,b,c,d,h,k,l,m,n;
double e,w;
scanf("%lf",&e);
if(e>1000.0&&10000.0)
{ a=(e/1000);
b=((e-a1000)/100);
c=((e-a
1000-b100)/10);
d=((e-a
1000-b100-c10)/1);
h=(int)e;
w=e-h;
k=w10;
l=w
100-k10;
m=w
1000-k100-l10;
n=w10000-k1000-l100-m10;
printf("千位数字%d\n",a);
printf("百位数字%d\n",b);
printf("个位数字%d\n",c);
printf("十位数字%d\n",d);
printf("小数点后第一位是%d\n",k);
printf("小数点后第二位是%d\n",l);
printf("小数点后第三位是%d\n",m);
printf("小数点后第四位是%d\n",n);
}
else
printf("输入错误\n");
return 0;
}

运行结果及报错内容

img

img

img

我的解答思路和尝试过的方法 比如1234.5678,w=e-h=0.5678,小数点后一位是k=w10 是5.678,int以后是5。小数点后第二位是w100-k*10,是56.78-50,是6.78,int以后是6。第三位第四位也是这样。
我想要达到的结果 小数点后第四位正常输出,不符合if条件的输出输入错误。

if(e>1000.0&&10000.0)
改为
if(e>1000.0&&e<10000.0)
n=w*10000%10就行了,别写那么复杂

第4位可能是有误差的,改为f4 = w * 10000 - f1 * 1000 - f2 * 100 - f3 * 10 + 0.5;