偶然にも質問がかぶりぎみなんですが,わからないので教えてください.


#include <stdio.h>
#include <cmath.h>

int main() {
inta = (int)(log(8.) / log(2.));

printf("%d\n", a);

return 0;
}

このプログラムを整数型へのキャストなしに実行すると,期待通り3が出ます.
ですが上のように整数型へキャストすると,2.8くらいの値になっているようなんです.
できればなぜなのか,またどうすれば期待通りに動いてくれるのかおしえてくらさい