切り捨て、切り上げ、四捨五入を実装
プログラム全体は、mind会議室 のデータライブラリをご覧ください。
小数点以下の指定桁で処理する場合のみです。(千など整数部での処理は未)
プログラムの一部
K最下位桁に一加算とは (K小数 → )
※副作用
小数情報Aは 構造体情報
桁数Aは ワード変数
小数情報Aに 入れる
小数情報Aの K桁数 回数指定し
小数情報Aの K数字(回数)が 9と 等しい
ならば 小数情報Aの K数字(回数)を クリアし
さもなければ
小数情報Aの K数字(回数)を 一つ増加し
終わり
つぎに
繰り返す
小数情報Aの K桁数を 一つ増加し
小数情報Aの K桁数を 桁数Aに 入れる
1を 小数情報Aの K数字(桁数A)に 入れる。
K小数桁数指定処理とは (K小数、非負整数、処理区分→小数W)
小数情報Aは 構造体情報
小数桁数は 変数
処理区分は 変数 ※0:切り捨て、1:四捨五入、2:切り上げ
桁数Aは 変数
小数桁数Aは 変数
桁数は 変数
減少桁数は 変数
桁1は 変数
切り上げは 変数
小数情報Aと 小数桁数と 処理区分に 入れる
小数情報Aの K桁数を 桁数Aに 入れる
小数情報Aの K小数桁数を 小数桁数Aに 入れる
[減少桁数 := 小数桁数A - 小数桁数]
減少桁数が 0 以下
ならば 小数情報Aを 返し 終わり
つぎに
切り上げを クリアする
処理区分が 1と 等しい ※四捨五入
かつ
小数情報Aの K数字(減少桁数)が 5 以上
ならば 切り上げを セットし
つぎに
処理区分が 2と 等しい ※切り上げ
ならば 減少桁数 回数指定し
小数情報Aの K数字(回数)
ならば 切り上げを セットし 打ち切り
つぎに
繰り返す
つぎに
小数情報Aの K符号を 小数Wの K符号に 入れる
[桁数 := 桁数A - 減少桁数]
[小数桁数 := 小数桁数A - 減少桁数]
桁数を 小数Wの K桁数に 入れる
小数桁数を 小数Wの K小数桁数に 入れる
桁数 回数指定し
[桁1 := 減少桁数 + 回数]
小数情報Aの K数字(桁1)を 小数Wの K数字(回数)に 入れる
繰り返す
切り上げ ならば 小数Wの K最下位桁に一加算する
つぎに
小数Wを 返す。
L小数桁数指定切り捨てとは (L小数、非負整数→L小数)
入力小数は L小数情報
小数桁数は 変数
入力小数と 小数桁数に 入れる
入力小数を K小数に変換し 小数Cに 入れる
小数Cの 小数桁数で 0の K小数桁数指定処理を
K小数を文字列変換し 返す。
L小数桁数指定四捨五入とは (L小数、非負整数→L小数)
入力小数は L小数情報
小数桁数は 変数
入力小数と 小数桁数に 入れる
入力小数を K小数に変換し 小数Cに 入れる
小数Cの 小数桁数で 1の K小数桁数指定処理を
K小数を文字列変換し 返す。
L小数桁数指定切り上げとは (L小数、非負整数→L小数)
入力小数は L小数情報
小数桁数は 変数
入力小数と 小数桁数に 入れる
入力小数を K小数に変換し 小数Cに 入れる
小数Cの 小数桁数で 2の K小数桁数指定処理を
K小数を文字列変換し 返す。
テスト用のプログラム
L小数1は L小数型。
L小数2は L小数型。
W桁数は 変数。
メインは ( ・ --> ・ )
文字列Aは 文字列実体
「2つの小数の四則演算をします。(空入力で終了)」と 表示し 改行し
ここから
「小数1=」と 表示し 文字列入力し L小数1に 入れる
L小数1が 空列?
ならば 打ち切り
つぎに
L小数1が L小数?
でなければ 改行し 「L小数入力エラー」と 表示し 改行し
もう一度
つぎに
「小数点以下桁数=」と 表示し
文字列入力し 文字列Aに 入れる
文字列Aを 数値変換し 捨て W桁数に 入れる
L小数1を W桁数で L小数桁数指定切り捨てし L小数2に 入れる
「切り捨て=」と 表示し L小数2を 表示し 改行し
L小数1を W桁数で L小数桁数指定四捨五入し L小数2に 入れる
「四捨五入=」と 表示し L小数2を 表示し 改行し
L小数1を W桁数で L小数桁数指定切り上げし L小数2に 入れる
「切り上げ=」と 表示し L小数2を 表示し 改行し
改行し
繰り返す。
実行結果
c:\mind8\pmind\sample>test04
2つの小数の四則演算をします。(空入力で終了)
小数1=123.456789
小数点以下桁数=4
切り捨て=+123.4567
四捨五入=+123.4568
切り上げ=+123.4568
小数1=123.1203
小数点以下桁数=2
切り捨て=+123.12
四捨五入=+123.12
切り上げ=+123.13
小数1=999.9999
小数点以下桁数=3
切り捨て=+999.999
四捨五入=+1000.000
切り上げ=+1000.000