割り算を作りました。
共通処理
L小数の商とは (L小数、L小数、小数桁数、端数処理 → L小数 )
小数Aは 構造体情報
小数Bは 構造体情報
精度は 変数
端数処理区分は 変数
整数Aは 構造体 L小数型
整数Bは 構造体 L小数型
小数桁数Aは 変数
小数桁数Bは 変数
小数桁数は 変数
分子の桁上げは 変数
W商は 構造体 L小数型
W余りは 構造体 L小数型
小数Aと 小数Bと 精度と 端数処理区分に 入れる
精度が 0より 小さい
ならば 0を 精度に 入れる
つぎに
小数Aの L小数桁数を 小数桁数Aに 入れる
小数Bの L小数桁数を 小数桁数Bに 入れる
MAX(小数桁数A,小数桁数B)を 小数桁数に 入れる
小数桁数に 精度を 加え 分子の桁上げに 入れる
小数Aを 分子の桁上げ L小数を指定桁桁上げし 整数Aに 入れる
小数Bを 小数桁数だけ L小数を指定桁桁上げし 整数Bに 入れる
整数Aの L符号に 1を 入れる
整数Bの L符号に 1を 入れる
整数Aと 整数Bの L正数の商と余りを W商と W余りに 入れる
端数処理区分が 1と 等しい
ならば ※ 四捨五入
W余りの L整数の二倍と 整数Bを L整数の大小比較し 0 以上
ならば W商と L正整数に一加算結果を W商に 入れる
つぎに
さもなければ
端数処理区分が 2と 等しい
ならば ※ 切り上げ
W余りと Lゼロを L整数の大小比較し 1 以上
ならば W商と L正整数に一加算結果を W商に 入れる
つぎに
つぎに
つぎに
小数Aの L符号に 小数Bの L符号を 掛けて W商の L符号に 入れる
W商を 精度だけ L小数を指定桁桁下げし 返す。
切り捨て、四捨五入、切り上げ
L桁未満切り捨てた商とは (L小数、L小数、小数桁数 → L小数 )
0の L小数の商を 返す。
L桁未満四捨五入した商とは (L小数、L小数、小数桁数 → L小数 )
1の L小数の商を 返す。
L桁未満切り上げした商とは (L小数、L小数、小数桁数 → L小数 )
2の L小数の商を 返す。
テスト
L小数1は 構造体 L小数型。
L小数2は 構造体 L小数型。
L小数6は 構造体 L小数型。
メインは ( ・ --> ・ )
W文字列は 文字列実体
「2つの小数の割り算をします。(空入力で終了)」と 表示し 改行し
ここから
「小数1=」と 表示し
文字列入力し W文字列に 入れる
W文字列が 空列?
ならば 打ち切り
つぎに
W文字列を L小数変換し L小数1に 入れる
「小数2=」と 表示し
文字列入力し W文字列に 入れる
W文字列を L小数変換し L小数2に 入れる
L小数1と L小数2の 4桁 L桁未満切り捨てた商を L小数6に 入れる
「切り捨て商=」と 表示し L小数6を L小数文字列変換し 表示し
L小数1と L小数2の 4桁 L桁未満四捨五入した商を L小数6に 入れる
「四捨五入商=」と 表示し L小数6を L小数文字列変換し 表示し
L小数1と L小数2の 4桁 L桁未満切り上げした商を L小数6に 入れる
「切り上げ商=」と 表示し L小数6を L小数文字列変換し 表示し
改行する
繰り返す。
実行結果
c:\mind8\pmind\sample>lnum-sub03
2つの小数の割り算をします。(空入力で終了)
小数1=100
小数2=3
切り捨て商=+33.3333四捨五入商=+33.3333切り上げ商=+33.3334
小数1=200
小数2=3
切り捨て商=+66.6666四捨五入商=+66.6667切り上げ商=+66.6667
小数1=123.456
小数2=111.111
切り捨て商=+1.1111四捨五入商=+1.1111切り上げ商=+1.1112
小数1=8
小数2=5
切り捨て商=+1.6000四捨五入商=+1.6000切り上げ商=+1.6000
小数1=8
小数2=9
切り捨て商=+0.8888四捨五入商=+0.8889切り上げ商=+0.8889
小数1=123456789
小数2=11111
切り捨て商=+11111.2221四捨五入商=+11111.2221切り上げ商=+11111.2222