2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

日本語プログラミング言語mind8で多倍長数計算(機能追加)

Posted at

切り捨て、切り上げ、四捨五入を実装

プログラム全体は、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
2
0
5

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?