i, nをintにして、(n/i)の計算を((double)n/i)にするとか

doubkeを
> for(i=10;i<=1000000000;i*=10){
のように計算するのは好ましくない。誤差が出てしまう。