日々常々

ふつうのプログラマがあたりまえにしたいこと。

割り算を除算演算子なしで

何でこんなものを書こうと思ったんだろう…。

x = 10 //割られる数
y = 3  //割る数
z = 5  //小数点以下の最大桁数

i=0; j=1;
while (x > 0 && z >= 0) {
    while(x >= y) {x-=y; i+=j}
    y *= 0.1; j *= 0.1; --z;
}
println i

なんかもっと良い書き方ある気がするんだけど。
あー最終桁四捨五入してない…。

x = 20 //割られる数
y = 3  //割る数
z = 5  //小数点以下の最大桁数

i=0; j=1; k=0;
while (x > 0) {
    while(x >= y) {x-=y; i+=j; k++}
    if (z <= 0) {
        if (k > 4) i+=j;
        break;
    }
    y *= 0.1; j *= 0.1; --z; k=0;
}
println i

…だめだこりゃ。