大一c语言:

求解答:1.平均捐款额应该是48.666667,请问为什么这个程序输出的是48.666668?
2.请问有什么方法能输出48.666666?
下面是我写的程序
#include <stdio.h>
void main()
{
int i,j,t,p=0;
int a[15];
float b,s=0;
printf("输入单人捐款额:");
for(i=0;i<15;i++)
{
scanf("%d",&a[i]);
if(a[i]>0) p++;
}
for(i=0;i<15;i++)
s=s+a[i];
b=s/15;
for(i=0;i<14;i++)
for(j=i+1;j<15;j++)
if(a[i]<a[j])
{
t=a[i];
a[i]=a[j];
a[j]=t;
}
printf("有%d个人捐款了\n",p);
printf("捐款人平均的捐款额为:%f\n",b);
printf("将捐款额从大到小排序依次为:");
for(i=0;i<15;i++)
printf("%d ",a[i]);
printf("\n");
}