>>110
floatは色んな意味で無駄なので、浮動小数はdoubleで統一してる。
あと、a1,a2,a3は1未満の値になっているので、intにキャストすると0になってしまいます。

えぇっと、今はコメントをつけて分かりやすくしているつもりです。