ページ内ジャンプ:

アレゲなニュースと雑談サイト

airhead の日記から検索

airhead (13423)

airhead
(メールアドレス非表示)
http://slashdot.jp/~airhead/

<(same ID) at users.sourceforge.jp>
2009 年 04 月 15 日
PM 09:59
プログラミング

割り算の筆算 どう書く?を、JavaScript(+それを呼び出す手抜きHTML)でやってみた。コードはそちらに。n、mは正の整数に限定。

fが空欄のまま(もしくは0以下の数、数値として評価できない文字列)の場合、整数の範囲内で除算を行う。

n = m * q + r (within integer)
n: 1000
m: 71
q: 14
r: 6

          1 4
    ----------
7 1 ) 1 0 0 0
        7 1
       -----
        2 9 0
        2 8 4
       -------
            6

fに正の整数を指定すると、商がその桁数に達すると筆算を止める一方で、小数点以下になっても筆算を続ける(止まったときに商より剰余が大きい場合がある)。

n = m * q + r (up to 4 figures)
n: 1000
m: 71
q: 14.08
r: 0.32

          1 4.0 8
    --------------
7 1 ) 1 0 0 0
        7 1
       -----
        2 9 0
        2 8 4
       -------
            6 0 0
            5 6 8
           -------
              3 2

小数部をもつ商をどうしようかと考えた挙句、中間表現として各桁を配列qに入れた(小数部の桁に相当する要素の添字は負数になる)。小数部から始まる場合 (n < m) の処理をループから除外できそうに思えたからだが、それほど効果はなかったかも。

それによって書くことになった商の出力文字列化には、JavaScriptのへんてこ仕様(Array.lengthは、要素総数ではなく最大添字+1を返す)を利用した。

表示オプション しきい値: