关于double,int类型和浮点数,为什么?

第一行应该输出2,2
第二行应该输出2.000000,2.000000,可为什么不是呢?麻烦知道的解释一下,谢谢了
#include <stdio.h>
#include <math.h>
void main()
{
int m=5,k;
k=sqrt(m);
printf("%d,%d\n",k,sqrt(m));
printf("%f,%f\n",k,sqrt(m));
}
#include <stdio.h> #include <math.h> int main() { int m = 5; int k = (int)sqrt(m); printf( "%d,%f\n", k, sqrt(m) ); return 0; }