端 数 処 理 ︵ は す う し ょ り ︶ と は 、 与 え ら れ た 数 値 を 一 定 の 丸 め 幅 の 整 数 倍 の 数 値 に 置 き 換 え る こ と で あ る 。 平 た く 、 丸 め ︵ ま る め ︶ と も い う 。
シ ャ ー プ C o m p e t C S - 2 1 2 2 L 上 の 丸 め セ レ ク タ 。 左 の ツ マ ミ で 切 り 上 げ ・ 四 捨 五 入 ・ 切 り 捨 て の い ず れ か を 選 択 し 、 右 の ツ マ ミ で 小 数 点 以 下 の 桁 数 を 選 択 す る 。 事 務 用 電 卓 の 中 に は 、 こ の 機 種 の よ う に 計 算 結 果 を 指 定 し た 桁 数 に 丸 め て 表 示 で き る も の も あ る 。
常 用 的 に は 、 十 進 法 で 10 の 累 乗 ︵ … 1 0 0 、 10 、 1 、 0 . 1 、 0 . 0 1 … ︶ が 丸 め 幅 と さ れ る こ と が 多 い が 、 そ う で な い 丸 め 幅 を も つ 処 理 は 存 在 す る 。 十 進 法 以 外 の N 進 法 に つ い て 同 様 の 概 念 を 考 え る こ と も で き る 。
丸 め は 任 意 の 丸 め 幅 に 対 し 可 能 だ が 、 以 下 で は 特 に 断 ら な い 限 り 、 丸 め 幅 を 1 と す る ︵ 後 段 の ﹁ # 例 ﹂ で は 、 丸 め 幅 は 0 . 1 で あ る ︶ 。 任 意 の 丸 め 幅 で 丸 め る に は 、 丸 め る 前 に 丸 め 幅 で 割 り 、 丸 め た 後 に 丸 め 幅 を か け る 。
主 に 正 数 に つ い て 述 べ る が 、 負 数 に つ い て も 適 宜 述 べ る 。
整 数 部 分 を そ の ま ま 残 し 、 小 数 点 以 下 を 0 と す る 丸 め を ﹁ 切 り 捨 て ﹂ と い う 。 そ れ に 対 し 、 小 数 点 以 下 が 0 で な か っ た 場 合 整 数 部 分 を 1 増 や し 、 小 数 点 以 下 を 0 と す る 丸 め を ﹁ 切 り 上 げ ﹂ と い う 。
負 の 数 を 考 え る と 、 ﹁ 切 り 捨 て ﹂ ﹁ 切 り 上 げ ﹂ に 準 ず る 丸 め は 、 4 種 類 あ る 。 そ れ ぞ れ ﹁ ○ ○ へ の 丸 め ﹂ と 呼 ば れ る 。
符 号 を 無 視 し て 絶 対 値 を 丸 め る 場 合 、 ﹁ 切 り 捨 て ﹂ は 常 に 0 へ 近 づ く ︵ ま た は 変 わ ら な い 。 以 下 で は 省 略 ︶ の で ﹁ 0 へ の 丸 め ( r o u n d i n g t o w a r d z e r o ; R Z ) ﹂ 、 ﹁ 切 り 上 げ ﹂ は 常 に 数 直 線 上 の 無 限 遠 点 へ 近 づ く の で ﹁ 無 限 大 へ の 丸 め ( r o u n d i n g t o w a r d i n f i n i t y ; R I ) ﹂ と 呼 ば れ る 。 単 に ﹁ 切 り 捨 て ﹂ ﹁ 切 り 上 げ ﹂ と い う と 、 こ れ ら を さ す 。
逆 に 、 正 数 の 場 合 と 増 減 を 同 じ 向 き に す る 場 合 は 、 ﹁ 切 り 捨 て ﹂ は 常 に 減 る の で ﹁ 負 の 無 限 大 へ の 丸 め ( r o u n d i n g t o w a r d m i n u s i n f i n i t y ; R M ) ﹂ 、 ﹁ 切 り 上 げ ﹂ は 常 に 増 え る の で ﹁ 正 の 無 限 大 へ の 丸 め ( r o u n d i n g t o w a r d p l u s i n f i n i t y ; R P ) ﹂ と 呼 ば れ る 。
﹁ 切 り 捨 て ﹂ ﹁ 切 り 上 げ ﹂ は 、 最 も 計 算 が 単 純 な 丸 め で あ る 。 そ の 一 方 で 、 丸 め 誤 差 の 上 界 が 1 ︵ 最 大 が 1 近 い ︶ と 大 き い 。 さ ら に 悪 い こ と に 、 誤 差 が 常 に 同 じ 符 号 で あ る と い う バ イ ア ス が あ り 、 丸 め た 数 を 多 数 足 し 合 わ せ る と 、 個 数 に 比 例 し て 丸 め 誤 差 が 累 積 す る 。 こ の 欠 点 の た め 、 限 ら れ た 目 的 に し か 使 わ れ な い 。
数 値 が 増 え て は 困 る / 減 っ て は 困 る 場 合 は 、 ﹁ 切 り 捨 て ﹂ や ﹁ 切 り 上 げ ﹂ が 使 わ れ る 。
安全基準は、常に安全な方に丸められる。
誤差 や不確かさ は、切り上げられる。
数値が実際より増えると誇張・虚偽・捏造・難解と見なされる恐れがあるときは、切り捨てられる。
数値が実際より減ると矮小化・虚偽・捏造と見なされる恐れがあるときは、切り上げられる。
丸 め 誤 差 を 小 さ く 抑 え る に は 、 常 に 最 も 近 い 整 数 ︵ 2 つ あ る 場 合 は そ の う ち ど ち ら か ︶ に 丸 め れ ば い い 。 こ れ を ﹁ 最 近 接 丸 め ( r o u n d t o t h e n e a r e s t ) ﹂ と い う 。 た だ し 、 単 に ﹁ 最 近 接 丸 め ﹂ と い う と 、 後 述 す る ﹁ 偶 数 へ の 丸 め ﹂ を 意 味 す る こ と が 多 い の で 注 意 。
﹁ 最 近 接 丸 め ﹂ で は 、 丸 め 誤 差 は 最 大 で 0 . 5 で 、 ﹁ 切 り 捨 て ﹂ ﹁ 切 り 上 げ ﹂ の 丸 め 誤 差 の 半 分 に な る 。 バ イ ア ス も 、 端 数 が ラ ン ダ ム ︵ す な わ ち 、 [ 0 , 1 ) で 一 様 分 布 ︶ の 場 合 は 発 生 し な い 。 端 数 が ラ ン ダ ム で な く 端 数 0 . 5 が 正 の 割 合 で 発 生 す る 場 合 の み バ イ ア ス が 発 生 す る が 、 そ れ で も 、 ﹁ 切 り 上 げ ﹂ ﹁ 切 り 捨 て ﹂ よ り 格 段 に 少 な い ︵ 端 数 が 全 て 0 . 5 で あ る よ う な デ ー タ を 四 捨 五 入 す る と い っ た ワ ー ス ト ケ ー ス で は 同 じ 程 度 に な る ︶ 。
端 数 が ち ょ う ど 半 数 だ っ た 場 合 ど ち ら に 丸 め る か で 、 い く つ か の 変 種 が あ る 。
十 進 法 で は 、 端 数 が 0 . 5 未 満 な ら 切 り 捨 て 、 0 . 5 以 上 な ら 切 り 上 げ る ﹁ 半 数 切 り 上 げ ﹂ の 丸 め を ﹁ 四 捨 五 入 ﹂ と い う 。 J I S Z 8 4 0 1 で 規 則 B と し て 定 め ら れ て い る 。 ﹁ 四 捨 五 入 ﹂ と い う 呼 び 名 は 、 小 数 第 一 位 が 4 以 下 な ら ば 切 り 捨 て 、 5 以 上 な ら ば 切 り 上 げ る こ と に 相 当 す る こ と か ら 来 て い る 。 一 般 に は R 丸 め と も 言 う 。
正 数 に 対 し て は 、 0 . 5 を 足 し て 切 り 捨 て る と い う 、 単 純 な ア ル ゴ リ ズ ム で 得 ら れ る 。 な お 、 負 数 に 対 し て 正 常 な 結 果 を 得 よ う と す れ ば 、 切 り 捨 て は 負 の 無 限 大 へ の 丸 め で あ る 必 要 が あ る ︵ 0 へ の 丸 め だ と 、 た と え ば − 2 が − 1 に 丸 め ら れ て し ま う ︶ 。 た だ し 、 0 . 5 を 足 し て 負 へ の 無 限 大 へ 丸 め る と 、 端 数 が 0 . 5 の 場 合 に 絶 対 値 が 減 る ︵ た と え ば 、 − 1 . 5 は − 1 へ と 丸 め ら れ る ︶ 。 一 方 、 J I S Z 8 4 0 1 で は 、 負 数 は 絶 対 値 と し て 丸 め る ︵ − 1 . 5 は − 2 へ と 丸 め ら れ る ︶ 。 実 際 に 、 コ ン ピ ュ ー タ で 負 の 数 に ﹁ 0 . 5 を 足 し て 切 り 捨 て ﹂ た 場 合 ど う な る か は 、 負 数 と 切 り 捨 て の 実 装 に よ る 。
端 数 が 0 . 5 の と き 常 に 増 え る 方 向 に 丸 め ら れ る た め 、 ︵ 端 数 が ラ ン ダ ム で な い 場 合 は ︶ わ ず か に 正 の バ イ ア ス が 発 生 し う る 。
端数が0.5以下なら切り捨て、0.5超なら切り上げる丸めを「五捨五超入」という。
0.5は常に切り上げられる四捨五入とは逆の特徴を持つ。端数がランダムでない場合は、わずかに負のバイアスが発生しうる。
正の数に対しては、0.5を引いて切り上げることで得られる。
﹁ 偶 数 へ の 丸 め ﹂ ︵ r o u n d t o e v e n ︶ [ 2 ] [ 3 ] は 、 端 数 が 0 . 5 よ り 小 さ い な ら ﹁ 切 り 捨 て ﹂ 、 端 数 が 0 . 5 よ り 大 き い な ら ば ﹁ 切 り 上 げ ﹂ 、 端 数 が ち ょ う ど 0 . 5 な ら ﹁ 切 り 捨 て ﹂ と ﹁ 切 り 上 げ ﹂ の う ち 結 果 が 偶 数 と な る 方 へ 丸 め る ( つ ま り 偶 数 + 0 . 5 な ら ﹁ 切 り 捨 て ﹂ 、 奇 数 + 0 . 5 な ら ば ﹁ 切 り 上 げ ﹂ と な る ︶ 。 J I S Z 8 4 0 1 で 規 則 A と し て 定 め ら れ て い て 、 規 則 B ︵ 四 捨 五 入 ︶ よ り ﹁ 望 ま し い ﹂ と さ れ て い る 。
端 数 0 . 5 の デ ー タ が 有 限 割 合 で 存 在 す る 場 合 、 ﹁ 四 捨 五 入 ﹂ で は バ イ ア ス が 発 生 す る が 、 ﹁ 偶 数 へ の 丸 め ﹂ で は バ イ ア ス が 無 い 。 つ ま り 、 多 数 足 し 合 わ せ て も 、 丸 め 誤 差 が 特 定 の 側 に 偏 っ て 累 積 す る こ と が な い 。 た だ し 、 偶 数 + 0 . 5 は 現 れ る が 奇 数 + 0 . 5 は 現 れ な い デ ー タ の よ う に 分 布 に 特 殊 な 特 徴 が あ る 場 合 は 、 バ イ ア ス が 発 生 す る こ と が あ る 。
単 に ﹁ 偶 数 丸 め ﹂ ﹁ 最 近 接 丸 め ﹂ と も 呼 ば れ る 。 J I S Z 8 4 0 1 で 定 め ら れ て い る こ と か ら ﹁ J I S の 丸 め 方 [ 4 ] ﹂ 、 あ る い は 同 様 に I S O 3 1 - 0 で 定 め ら れ て い る こ と か ら ﹁ I S O 丸 め ﹂ と も い う 。 英 語 で は 、 誤 差 の 累 積 を 嫌 い 銀 行 家 が 好 ん で 使 っ た た め ﹁ 銀 行 家 の 丸 め ( b a n k e r s ' r o u n d i n g ) ﹂ 、 ﹁ 銀 行 丸 め ﹂ と も い う [ 注 1 ] 。 5 が 切 り 捨 て ら れ た り 切 り 上 げ ら れ た り す る の で ﹁ 五 捨 五 入 ﹂ と 呼 ば れ た り 、 端 数 が ち ょ う ど 0 . 5 の 場 合 に 整 数 部 分 が 偶 数 な ら ﹁ ゼ ロ へ の 丸 め ﹂ 奇 数 な ら ﹁ 無 限 大 へ の 丸 め ﹂ [ 注 2 ] に な る の で ﹁ 偶 捨 奇 入 ﹂ と 呼 ば れ た り も す る 。
「奇数への丸め」(round to odd)[2] は、偶数への丸めの対称である。端数が0.5より小さいなら「切り捨て」、端数が0.5より大きいならは「切り上げ」という点は最近接丸めとして同様だが、端数がちょうど0.5なら「切り捨て」と「切り上げ」のうち結果が奇数 となる方へ丸める、という点が偶数への丸めの逆である。
端数0.5のデータが有限割合で存在する場合、「四捨五入」ではバイアスが発生するが、「奇数への丸め」ではバイアスが無い。つまり、多数足し合わせても、丸め誤差が特定の側に偏って累積することがない。ただし、偶数+0.5は現れるが奇数+0.5は現れないデータのように分布に特殊な特徴がある場合は、バイアスが発生することがある。
定義は最近接丸めになっていないが、最近接丸めと等しくなる場合にのみ実用される丸めがいくつかある。
小 数 第 一 位 が 5 以 下 な ら ば 切 り 捨 て 、 6 以 上 な ら ば 切 り 上 げ る 丸 め を ﹁ 五 捨 六 入 ﹂ と い う 。 [ 注 3 ]
0 . 4 を 足 し て 切 り 捨 て る こ と で 得 ら れ る 。 0 . 5 5 が 0 へ 丸 め ら れ る こ と か ら 、 ﹁ 五 捨 六 入 ﹂ が ﹁ 最 近 接 丸 め ﹂ で は な い こ と が わ か る 。 端 数 が ラ ン ダ ム な デ ー タ に 対 し は 、 や や 強 い 負 の バ イ ア ス が あ る た め 、 そ の よ う な デ ー タ に 対 し ﹁ 五 捨 六 入 ﹂ が 使 わ れ る こ と は ま ず な い 。
﹁ 五 捨 六 入 ﹂ が 実 用 的 な の は 、 端 数 が 0 . 1 の 整 数 倍 の み を 取 り う る 場 合 に 限 ら れ る 。 こ の 場 合 の ﹁ 五 捨 六 入 ﹂ は 、 0 . 1 〜 0 . 5 で 切 り 捨 て 、 0 . 6 〜 0 . 9 で 切 り 上 げ ︵ 0 . 5 超 0 . 6 未 満 は 発 生 し な い ︶ な の で 、 ﹁ 最 近 接 丸 め ﹂ の 一 種 の ﹁ 五 捨 五 超 入 ﹂ と 同 じ 結 果 と な る 。
例 え ば 、 麻 雀 の と あ る ロ ー カ ル ル ー ル で は 、 最 終 的 な 得 失 点 を 五 捨 六 入 す る 。 こ の 場 合 の 端 数 は 常 に 0 . 1 の 整 数 倍 ︵ 1 0 0 の 倍 数 を 、 1 0 0 0 の 倍 数 に 丸 め る ︶ な の で 、 丸 め 結 果 は ﹁ 五 捨 五 超 入 ﹂ と 同 じ 結 果 と な る 。
コ ン ピ ュ ー タ で は 、 プ ロ セ ッ サ に よ っ て は ﹁ 四 捨 五 入 ﹂ と ﹁ 五 捨 六 入 ﹂ を 均 等 に 使 い 分 け 、 バ イ ア ス を 0 に す る 工 夫 が な さ れ て い る も の が あ る 。
アルシーアル麻雀 の得点計算 では、かつて端数処理が行われる前の段階の計算による得点を丸めるときに「四捨六入」と呼ばれるものが採用されていた。これは丸める桁が必ず偶数になるためであり、実質的には「最近接丸め」である。また、#偶数への丸め が「四捨六入」と呼ばれる事例もある。
5を単位とした端数が3未満なら切り捨て、3以上なら切り上げとなる。
端数がランダムな場合は、「五捨六入」と同様に非実用的である。しかし通常は、1刻みのデータに対し5を丸め幅として丸めるので、その結果は最近接値への丸めである。
IEEE 754 で丸めモードとして定められている
最近接丸め(偶数)
0への丸め
正の無限大への丸め
負の無限大への丸め
の4つを「IEEE丸め」と総称する。
あ る 数 を 丸 め る 際 に 、 [ 0 , 1 ) の 一 様 乱 数 を 発 生 さ せ て 、 乱 数 の 値 が 端 数 以 上 な ら 切 り 捨 て 、 端 数 よ り 小 さ け れ ば 切 り 上 げ る 。
あ る い は そ の 数 に 一 様 乱 数 を 足 し て 切 り 捨 て る こ と で 得 ら れ る 。
丸 め 誤 差 は 上 界 が 1 だ が 、 分 布 が 0 近 く に 集 ま っ て い る た め 、 ラ ン ダ ム な デ ー タ に 対 す る 平 均 二 乗 誤 差 は 切 り 捨 て ・ 切 り 上 げ よ り は 少 な い 。
任 意 の 分 布 の 端 数 に 対 し て 、 バ イ ア ス が な い の が 特 長 で あ る 。 た と え ば 、 0 ~ 0 . 5 の 間 に あ る 端 数 が 多 か っ た と す る と 、 偶 数 へ の 丸 め で は 負 の バ イ ア ス が 生 ま れ る が 、 乱 数 丸 め で は バ イ ア ス が な い 。
デ ィ ザ の 一 種 と し て 使 わ れ る 。
常に奇数側へ丸める。
二進法 では、切り捨てた後LSB をセットするという、簡単なアルゴリズムで得られる。
この方法の丸め誤差は切り捨て・切り上げと同程度で大きいが、ランダムなデータに対してはバイアスを持たない。
同 じ 数 値 を 2 回 以 上 丸 め て は い け な い 。 偶 数 へ の 丸 め の 場 合 で 、 切 り 捨 て 過 ぎ て し ま う 例 と 、 切 り 上 げ 過 ぎ て し ま う 例 を 説 明 す る 。
● 1 2 2 . 5 1 は 1 2 3 に 丸 め ら れ な け れ ば な ら な い 。 し か し 、 ま ず 1 2 2 . 5 と す る と 、 次 は 1 2 2 に な り 、 切 り 捨 て 過 ぎ に な る 。
● 1 2 3 . 4 9 も 1 2 3 に 丸 め ら れ な け れ ば な ら な い 。 し か し 、 ま ず 1 2 3 . 5 と す る と 、 次 は 1 2 4 に な り 、 切 り 上 げ 過 ぎ に な る 。
簡 単 な 原 則 の よ う に 思 え る か も し れ な い が 、 時 に 難 し い 問 題 を 引 き 起 こ す こ と が あ る 。 た と え ば 、 計 算 し て い る な ん ら か の 値 が 、 ﹁ 偶 数 + だ い た い 0 . 5 ﹂ と い う よ う な 値 に な っ た 時 、 そ れ が ﹁ 0 . 5 ち ょ う ど か 、 も し か し た ら 少 し 小 さ い ﹂ と い う 場 合 は 切 り 捨 て で き る が 、 そ れ と 対 称 的 で あ る に も か か わ ら ず ﹁ 0 . 5 ち ょ う ど か 、 も し か し た ら 少 し 大 き い ﹂ と い う 場 合 は 、 ﹁ も し か し た ら ﹂ の 部 分 を は っ き り さ せ な け れ ば 、 正 し い 丸 め が で き な い 。 ﹁ 奇 数 + だ い た い 0 . 5 ﹂ で は 逆 に な る [ 注 4 ] 。
与えられた数値を上で挙げた端数処理によって置き換えた場合の結果を示す。この例では、丸め幅は0.1である[注 5] 。
与えられた数値
切り捨て
切り上げ
四捨五入
五捨六入
偶数への丸め
8.05
8.0
8.1
8.1
8.0
8.0
8.051
8.0
8.1
8.1
8.0
8.1
8.15
8.1
8.2
8.2
8.1
8.2
8.25
8.2
8.3
8.3
8.2
8.2
8.263
8.2
8.3
8.3
8.3
8.3
8.347
8.3
8.4
8.3
8.3
8.3
8.35
8.3
8.4
8.4
8.3
8.4
8.45
8.4
8.5
8.5
8.4
8.4
太字の数値 は、四捨五入の場合と異なる結果となるものである。
chopping は、あるビット以下を全て0にする。これは最も計算が簡単な丸めで、正の数に対しては切捨てとなる。負数に対する動作は負数の方式によるが、2の補数 表現では負の無限大への丸めとなる。
choppingは、下位ビットを明示的に0にするほか、たとえば32ビットレジスタの上位16ビットを16ビットレジスタとして使うなどでも得られる。
choppingのあと、有効桁の中でのLSBをセットすると、フォン・ノイマン丸めとなる。
同 様 に ビ ッ ト 操 作 で 実 装 さ れ る も の で あ る が 、 プ ロ グ ラ ミ ン グ 言 語 の 関 数 な ど で 丸 め の 機 能 が 提 供 さ れ て い る 。 F P U で 実 装 さ れ て い る こ と も 多 い 。
通 常 は 、 丸 め 関 数 の 丸 め 幅 は 1 で 、 そ れ 以 外 の 丸 め 幅 に 対 し て は 、 丸 め 前 に 丸 め 幅 で 割 り 丸 め 後 に 丸 め 幅 を 掛 け る 、 と い う の が 一 般 的 な レ シ ピ で あ る 。 こ れ は 、 割 っ た り 掛 け た り す る の は プ ロ グ ラ マ の 責 任 で あ り 、 処 理 系 は ﹁ 小 数 点 以 下 の 丸 め ﹂ の み に 責 任 を 持 つ 、 と い う 明 確 な 責 任 の 分 界 点 の あ ら わ れ で あ る 。 第 2 引 数 以 降 で 丸 め 幅 を 指 定 で き る 環 境 も あ る ︵ が 、 次 で 述 べ る よ う に 問 題 が あ る ︶ 。
R u b y ︵ や P H P ︶ な ど 一 部 の 言 語 の ラ イ ブ ラ リ で は 、 ︵ 十 進 で ︶ 小 数 点 以 下 何 桁 目 で 丸 め る 、 と い う こ と を 引 数 で 指 定 で き る も の が あ る が 、 仕 様 に 問 題 が あ る 。 よ く 知 ら れ て い る よ う に 一 般 的 な 二 進 の 浮 動 小 数 点 表 現 で は 、 例 え ば き っ か り 0 . 1 と い う 値 は 表 現 で き な い 。 と い う こ と は 、 た と え ば 0 . 1 1 を 小 数 点 以 下 1 桁 に 丸 め た 結 果 と し て 0 . 1 が 欲 し い 、 と 要 求 し て も 、 そ の 0 . 1 は 内 部 的 に は ﹁ 丸 め た ﹂ 結 果 と は 本 来 は 言 え な い も の だ か ら で あ る 。 そ の よ う な 計 算 に 関 す る 、 い く つ か の モ デ ル の 立 て 方 は 考 え ら れ る が [ 5 ] 、 い ず れ に し ろ 元 々 の 要 求 の ほ う が 無 理 と し た ほ う が 妥 当 で あ る 。
丸 め 関 数 が 返 す 値 は 、 小 数 点 以 下 が 全 て ゼ ロ の 値 、 と い う 意 味 で は 整 数 だ が 、 型 は 引 数 と 同 様 に 浮 動 小 数 点 型 と い う も の も 多 い 。 こ れ は 理 論 的 な 理 由 よ り は 実 際 上 の 理 由 で 、 以 前 は 一 般 的 な 整 数 型 で あ っ た 32 ビ ッ ト 固 定 長 整 数 で 表 現 で き る 整 数 の 範 囲 よ り も 、 一 般 的 な 浮 動 小 数 点 型 で あ る 倍 精 度 浮 動 小 数 点 型 で 正 確 に 表 現 で き る 整 数 の 範 囲 の ほ う が 広 い た め で あ る 。
floor, ceiling, truncate
編集
floor関数(緑)とceil関数(赤)
多 く の 環 境 で は 、 床 関 数 ︵ 負 の 無 限 大 へ ︶ 、 天 井 関 数 ︵ 正 の 無 限 大 へ ︶ 、 切 り 落 と し 関 数 ︵ 0 へ ︶ が 実 装 さ れ て い る ︵ 床 関 数 と 天 井 関 数 ︶ 。 そ れ ぞ れ の 関 数 名 に は 、 次 の よ う な も の が 使 わ れ る 。
● 床 関 数 - f l o o r
● 天 井 関 数 - c e i l 、 c e i l i n g
● 切 り 落 と し 関 数 - t r u n c 、 t r u n c a t e 、 f i x
こ れ ら は 、 5 つ の I E E E 丸 め モ ー ド の う ち の 3 つ の 方 向 丸 め に 対 応 し て い る 。 偶 数 へ の 丸 め の 実 装 率 は 、 こ れ ら よ り 劣 る 。 無 限 大 へ の 丸 め が 実 装 さ れ て い る 環 境 は 少 な い 。
例 : ± 3 . 7 を 丸 め 幅 1 で 丸 め る 。
ceil(3.7) = 4, ceil(-3.7) = -3
floor(3.7) = 3, floor(-3.7) = -4
trunc(3.7) = 3, trunc(-3.7) = -3
最近接丸めは、多くの環境にround という関数がある。しかし、どの最近接丸めかを定めている一般的となっている標準(デファクトスタンダード)は存在しないので注意が必要である。たいていは四捨五入か偶数への丸めであるが[注 6] 、明示的に選択できないことも多い。
プログラミング言語
round(0.5)
round(-0.5)
C99 C++11
Ruby
1
-1
.NET Framework Python
0
0
Java
1
0
JavaScript
1
-0
演算子(int)
浮 動 小 数 点 型 か ら 整 数 型 へ の キ ャ ス ト な ど に よ る 型 変 換 で は 、 処 理 が 単 純 な 切 り 捨 て に な る も の が 多 く 、 負 の 場 合 は 実 装 に よ る 。
C 言 語 の m o d f 関 数 は 、 実 数 を 整 数 部 と 小 数 部 に 分 割 す る 。 整 数 部 は 0 へ の 丸 め で あ る 。
︵ 以 下 ︵ § a . b ︶ の よ う に し て 示 す セ ク シ ョ ン は J I S X 3 0 1 0 - 1 9 9 3 ︵ C 8 9 ︶ の も の ︶
C 言 語 お よ び そ れ と 同 じ 仕 様 の 言 語 で は 、 キ ャ ス ト な ど に よ る 浮 動 小 数 点 型 か ら 整 数 型 へ の 型 変 換 に お い て は 、 そ の 値 は 小 数 部 が 捨 て ら れ る ︵ § 6 . 2 . 1 . 3 ︶ 。 よ っ て ﹁ 0 へ の 丸 め ﹂ が 行 わ れ る 。
C 8 9 で は 、 数 学 ラ イ ブ ラ リ ︵ § 7 . 5 ︶ に 床 関 数 f l o o r と 天 井 関 数 c e i l が あ り ︵ § 7 . 5 . 6 ︶ 、 浮 動 小 数 点 型 に お い て 正 方 向 へ の 丸 め と 負 方 向 へ の 丸 め が 計 算 で き る 。
C 9 9 で は 、 四 捨 五 入 関 数 r o u n d
を は じ め と し て 、 f e g e t r o
u n d
/ f e s e t r o u n d
︵ こ れ は m a t h . h で は な く f e n v . h ︶ に よ る 丸 め モ ー ド の 取 得 と 設 定 な ど 、 大 幅 な 強 化 が 図 ら れ て い る 。
な お 、 浮 動 小 数 点 演 算 の 性 質 上 、 た と え ば ( i n t ) ( 0 . 6 / 0 . 2 ) が 3 . 0 で は な く 2 . 0 に な る こ と が あ る 。 こ れ は 、 浮 動 小 数 点 表 現 で は 0 . 6 や 0 . 2 を 厳 密 に 表 現 で き な い た め 、 0 . 6 / 0 . 2 が 2 . 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 6 の よ う な 値 に な る た め で あ る 。
テーブルメーカーのジレンマ (数表作成者のジレンマ)
編集
ウ ィ リ ア ム ・ カ ハ ン は 端 数 処 理 の ︵ あ ま り 意 識 さ れ て い な か っ た ︶ 難 し さ を 示 し 、 ﹁ テ ー ブ ル メ ー カ ー の ジ レ ン マ ﹂ [ 注 7 ] と い う フ レ ー ズ を 提 案 し た 。 こ れ は ﹁ # 2 回 以 上 の 丸 め の 禁 止 ﹂ の 節 で ﹃ ﹁ も し か し た ら ﹂ の 部 分 を は っ き り さ せ な け れ ば 、 正 し い 丸 め が で き な い ﹄ と 説 明 し た 内 容 の ﹁ は っ き り さ せ る ﹂ た め に 必 要 な コ ス ト に つ い て ︵ 実 は ︶ ﹁ オ ー ダ ー を 見 積 も る ﹂ こ と す ら 不 可 能 だ 、 と い う 話 で あ る 。 カ ハ ン が 指 摘 し た 後 に は 、 具 体 的 に 著 し く ﹁ 悪 い 例 ﹂ と し て ど う い う 値 が あ る か 、 と い っ た サ ー ベ イ [ 6 ] な ど が 行 わ れ て い る 。
そ の 一 例 を 示 し な が ら カ ハ ン 曰 く 、
そ こ に お い て オ ー バ ー フ ロ ー ・ ア ン ダ ー フ ロ ー を し な い と き 正 し く 丸 め ら れ た y ^ w を 全 て の 2 つ の 浮 動 小 数 点 数 の 引 数 に 対 し て 計 算 す る の に ど れ だ け の コ ス ト が か か る か だ れ も 知 ら な い 。 一 方 、 評 判 の 良 い 数 学 ラ イ ブ ラ リ は 初 等 超 越 関 数 を 多 く の 場 合 わ ず か に 1 / 2 u l p を 超 え る の に 収 ま り ほ と ん ど 常 に 十 分 1 u l p に 収 ま る よ う に 計 算 す る 。 な ぜ y ^ w は 平 方 根 の よ う に 1 / 2 u l p に 収 ま る よ う 丸 め ら れ な い の だ ? な ぜ な ら ば ど れ だ け の 計 算 が か か る か だ れ も 知 ら な い か ら だ . . . 。 超 越 的 な 表 現 を 計 算 し て 既 定 の 桁 数 に 正 し く 丸 め る の に ど れ だ け の 余 分 な 桁 数 を 保 持 し な け れ ば な ら な い か を 予 想 す る 一 般 的 な 方 法 は な い 。 あ る 有 限 の 桁 数 が 最 終 的 に 十 分 で あ る と い う ( 正 し い と し て も ) 事 実 す ら も 深 い 定 理 か も し れ な い 。
こ の 事 実 の 帰 結 と し て 、 標 準 規 格 で は 以 下 の よ う に な っ て い る 。 I E E E 7 5 4 ︵ 1 9 8 5 年 版 ︶ で は 、 四 則 演 算 ︵ 加 減 乗 除 ︶ 、 融 合 乗 加 算 、 平 方 根 、 剰 余 ︵ 浮 動 小 数 点 剰 余 ︶ に つ い て は 、 ﹁ 無 限 の 精 度 で 演 算 し て そ れ を 正 し く 丸 め た 結 果 ﹂ と 一 致 す る こ と を 要 求 し 、 ま た 規 格 に 合 致 し て い る と 保 証 す る 実 装 で は そ の こ と を 保 証 し な け れ ば な ら な い 。 一 方 で 、 よ り 複 雑 な 関 数 ︵ 演 算 ︶ に 対 し て は 1 9 8 5 年 版 の 仕 様 で は 同 様 な 要 求 は 示 さ れ ず 、 そ れ ら に 対 し て は 典 型 的 に は ﹁ 最 終 b i t の 範 囲 内 ︵ い わ ゆ る ﹁ 1 U L P ﹂ ︶ ﹂ の 正 し さ は 保 証 さ れ 無 い 。 2 0 0 8 年 版 で は い く つ か の 更 新 が あ っ た 。
G e l f o n d – S c h n e i d e r 理 論 お よ び L i n d e m a n n – W e i e r s t r a s s 理 論 を 用 い る こ と に よ り 、 標 準 の 初 等 関 数 の 多 く は 非 零 の 有 理 数 の 引 数 に 対 し て 結 果 が 超 越 的 に な る ︵ 有 限 回 の 代 数 演 算 で は 表 せ な い ︶ こ と が 証 明 さ れ て い る 。 そ の よ う な 関 数 の 値 を 正 し く 丸 め る こ と は ︵ 原 理 的 に は ︶ 常 に 可 能 で あ る が 、 正 し く 丸 め ら れ た 値 を 導 く た め に 途 中 の 計 算 を ど れ く ら い 高 い 精 度 で 行 う 必 要 が あ る か の 限 界 を 事 前 に 決 め る こ と に も 多 く の 計 算 時 間 を 必 要 と す る か も し れ な い 。
い く つ か の パ ッ ケ ー ジ は 正 し い 丸 め を 提 供 す る 。
● G N U M P F R パ ッ ケ ー ジ は 正 し く 丸 め ら れ た 任 意 精 度 の 結 果 を 与 え る 。
他 の い く つ か の パ ッ ケ ー ジ は 倍 精 度 に お い て 正 し い 丸 め の 初 等 関 数 を 実 装 し て い る 。
● I B M の l i b u l t i m ( 最 近 接 丸 め の み )
● S u n M i c r o s y s t e m s の l i b m c r ( 4 つ の 丸 め モ ー ド に つ い て )
● A r é n a i r e チ ー ム ( L I P , E N S L y o n ) に よ る C R l i b m ( 4 つ の 丸 め モ ー ド を サ ポ ー ト し 、 そ れ は 証 明 さ れ て い る 。 )
そ れ に つ い て 丸 め ら れ た 値 が ど れ だ け の 桁 を 計 算 し て も d e t e r m i n e d に な り え な い よ う な 計 算 可 能 な 数 が 存 在 す る 。 特 定 の イ ン ス タ ン ス は 与 え ら れ る こ と は な い が 、 存 在 は 停 止 問 題 の 決 定 不 能 性 か ら 導 か れ る 。
た と え ば 、 も し も ﹁ ゴ ー ル ド バ ッ ハ の 予 想 ︵ 4 以 上 の 任 意 の 正 の 偶 数 は 必 ず 2 つ の 素 数 の 和 で 表 せ る ︶ ﹂ が 真 で あ っ て 、 し か し 証 明 不 可 能 な 命 題 で あ る と 仮 定 す れ ば 、 次 の 式 の 値 を ︵ 切 り 上 げ て ︶ 整 数 に 丸 め た 結 果 を 決 定 す る こ と は で き な い 。
1 0 ^ − n こ こ で n は 4 よ り 大 き い 偶 数 で 2 つ の 素 数 の 和 に は な ら な い 最 小 の も の 、 あ る い は も し そ の よ う な 偶 数 が 無 け れ ば 0 と す る
丸 め た 結 果 は も し そ の よ う な 偶 数 n が 存 在 す れ ば 1 、 存 在 し な け れ ば 0 で あ る 。 し か し ﹁ 予 想 ﹂ が 証 明 不 可 能 で あ っ て も 丸 め ら れ る 前 の 値 で あ れ ば 与 え ら れ た 任 意 の 精 度 で 近 似 で き る 。
建 設 事 業 に お け る 積 算 に お い て 、 当 該 業 務 の 金 額 を 算 出 す る 際 に 取 り 扱 わ れ る 端 数 処 理 に つ い て は 、 各 種 作 業 行 為 ︵ 請 負 工 事 、 委 託 業 務 … ︶ に よ っ て そ れ ぞ れ 規 定 や 定 め が あ り [ 7 ] 、 そ れ に 従 っ て 端 数 処 理 が 取 り 扱 わ れ る 。
例 と し て 、 ﹁ 国 土 交 通 省 土 木 工 事 積 算 基 準 ﹂ で 第 1 編 土 木 工 事 積 算 基 準 等 通 達 資 料 の 中 の ﹁ 土 木 工 事 積 算 要 領 及 び 基 準 の 運 用 ﹂ に 、 ﹁ 国 土 交 通 省 土 木 工 事 標 準 積 算 基 準 書 ( 共 通 編 ) ﹂ で は 第 Ⅰ 編 総 則 第 2 章 に [ 8 ] [ 9 ] 、 ﹁ 土 木 工 事 積 算 マ ニ ュ ア ル ﹂ で は 第 5 編 ﹁ 土 木 工 事 積 算 基 準 の 解 説 ﹂ 1 章 一 般 事 項 に そ れ ぞ れ 諸 雑 費 及 び 端 数 処 理 の 方 法 が 記 載 さ れ て い る [ い つ ? ] [ 10 ] 。 た と え ば 土 木 請 負 工 事 に お け る 共 通 仮 設 費 、 一 般 管 理 費 、 現 場 管 理 費 の 経 費 率 は 全 て 、 小 数 点 以 下 第 3 位 を 四 捨 五 入 し て 2 位 止 め に し て い る が 、 こ れ は ﹃ 国 土 交 通 省 土 木 工 事 標 準 積 算 基 準 書 ︵ 共 通 編 ︶ ﹄ ﹁ P 特 − 2 − 月 − 8 ﹂ 、 ﹁ 特 − 2 − 月 − 3 0 ﹂ 、 ﹁ 特 − 3 − 日 − 2 ﹂ に 記 載 さ れ た 記 述 規 定 に 基 づ く 。
数 量 に つ い て も 積 算 基 準 で 定 め が あ り [ 9 ] 、 建 築 で は ﹁ 建 築 数 量 積 算 基 準 ﹂ で ﹁ 積 算 の 数 量 は 、 設 計 図 書 か ら 読 み と る こ と の で き る 設 計 数 量 に よ る こ と を 原 則 と す る ﹂ と し て い る 。 し た が っ て 、 所 要 数 量 、 計 画 数 量 を 必 要 と す る 場 合 は 、 そ の 旨 明 記 す る こ と に な っ て い る 。 ま た 、 所 要 数 量 で 表 示 す る 必 要 の あ る と き に は 、 そ の 割 増 率 に つ い て も 規 定 し て い る 。
長 さ 計 測 の 単 位 は m と し 、 小 数 点 以 下 3 位 を 四 捨 五 入 す る 。 一 般 に 設 計 図 書 の 寸 法 は ﹁ mm ﹂ 単 位 で 記 入 さ れ て い る が 、 そ の ま ま 計 算 す る と 非 常 に 細 か い 数 値 と な る 。 積 算 上 で は 長 さ の 計 測 は ﹁ m ﹂ が 単 位 で あ る か ら 、 端 数 が 多 い と そ れ だ け 作 業 効 率 が 悪 い ば か り か 計 算 違 い の も と に も な り や す い 。 こ の た め ﹁ 建 築 数 量 積 算 基 準 ﹂ な ど 各 種 積 算 基 準 書 で は 、 積 算 精 度 を 勘 案 し て 小 数 点 以 下 3 位 を 四 捨 五 入 し 、 ﹁ cm ﹂ の 位 ま で と し て い る 。
計 算 数 値 の 端 数 に つ い て も 小 数 点 以 下 3 位 を 四 捨 五 入 す る 。
電 子 デ ー タ の 場 合 は 、 入 力 時 、 計 算 途 上 で 端 数 処 理 は 行 わ な く て も よ く 、 最 後 の 内 訳 書 に 対 応 す る 数 量 で 端 数 処 理 を 行 う 。
ま た 同 一 の も の が 数 箇 所 あ る 場 合 の 計 算 過 程 は 、 1 箇 所 の 長 さ 、 面 積 、 体 積 に つ い て 四 捨 五 入 し た の ち 、 倍 数 を 乗 じ る 方 法 と 、 倍 数 を 乗 じ た 上 で 最 後 に 四 捨 五 入 す る 方 法 と 二 通 り 考 え ら れ る が 、 前 者 は 原 則 に よ る 計 算 と し 、 後 者 は 便 法 に よ る 計 算 と し て い る 。 多 少 の 差 は あ る が 、 微 細 な 誤 差 だ け に ほ と ん ど 問 題 は な い の で 、 い ず れ の 方 法 に よ っ て も よ い こ と に な っ て い る 。
鉄 筋 の 径 、 鉄 骨 材 、 木 材 の 断 面 等 は 材 料 の 規 格 を 示 す も の で あ る の で 、 こ の 場 合 は 上 述 の 規 定 の 適 用 外 と し て 、 mm ま で 計 測 す る こ と と し て い る 。 ま た 建 築 工 事 積 算 基 準 の 第 4 編 第 2 章 第 2 節 1 通 則 お よ び 第 5 編 第 2 種 第 2 節 6 . ( 6 ) . 2 ) に 示 す 通 り 、 コ ン ク リ ー ト の 断 面 寸 法 も 小 数 点 以 下 3 位 ま で 計 測 し 、 木 材 の 所 要 数 量 ( 体 積 ) を 求 め る 場 合 も こ の 規 定 の 適 用 外 と な っ て い る 。
設 計 図 書 の 数 量 表 示 に つ い て 、 単 位 は 言 う ま で も な く 、 長 さ m 、 面 積 m 2 、 体 積 m 3 お よ び 質 量 t で あ り 、 表 示 さ れ る 数 量 の 端 数 に つ い て は 、 小 数 点 以 下 2 位 を 四 捨 五 入 し て 小 数 点 以 下 1 位 と す る 。 た だ し 、 1 0 0 以 上 の 数 値 に つ い て は 、 四 捨 五 入 し て 整 数 と す る 、 な ど が あ る 。
単 価 表 に つ い て も 、 川 崎 市 の 例 [ 11 ] な ど の よ う に 、 有 効 数 字 に 合 わ せ た 桁 を 、 一 次 単 価 表 で は 諸 雑 費 を プ ラ ス 計 上 、 二 次 以 下 単 価 表 で は 諸 雑 費 を プ ラ ス 計 上 せ ず 切 捨 て 、 な ど の 処 置 で 端 数 を 調 整 し て い る の が 一 般 的 で あ る 。
ま た 、 土 木 工 事 工 事 費 積 算 要 領 及 び 基 準 の 運 用 [ 12 ] に あ る と お り 、 単 価 表 で は 、 歩 掛 表 に 諸 雑 費 率 が あ る も の は 単 位 数 量 当 り の 単 価 表 の 合 計 金 額 が 、 有 効 数 字 4 桁 に な る よ う に 原 則 と し て 所 定 の 諸 雑 費 率 以 内 で 端 数 を 計 上 し 、 歩 掛 表 に 諸 雑 費 率 が な く 、 端 数 処 理 の み の 場 合 は 単 位 数 量 当 り の 単 価 表 の 合 計 金 額 が 有 効 数 字 4 桁 に な る よ う に 原 則 と し て 端 数 を 計 上 し て お り 、 単 価 表 の 各 構 成 要 素 の 数 量 × 単 価 = 金 額 は 小 数 第 2 位 ま で と し て 3 位 以 下 は 切 り 捨 て て い る が 、 内 訳 書 で は 諸 雑 費 は 計 上 せ ず 、 内 訳 書 の 各 構 成 要 素 の 数 量 × 単 価 = 金 額 は 1 円 ま で と し 、 1 円 未 満 は 切 り 捨 て て い る 。
(一) ^ ﹁ 最 近 接 偶 数 へ の 丸 め ﹂ 、 ﹁ 偶 数 丸 め ﹂ 、 ﹁ 最 近 接 丸 め ﹂ 、 ﹁ J I S 丸 め ﹂ 、 ﹁ I S O 丸 め ﹂ 、 ﹁ 銀 行 家 の 丸 め ﹂ 、 ﹁ 銀 行 丸 め ﹂ 、 ﹁ 五 捨 五 入 ﹂ 、 ﹁ 偶 捨 奇 入 ﹂ と い う 用 語 を 採 用 し て い る 文 献 は 、 現 在 の と こ ろ 発 見 で き て い な い 。 詳 細 は 、 ノ ー ト を 参 照 。
(二) ^ 負 の 数 の 場 合 も 含 め た 明 示 的 表 現 と し て は 、 そ う な る 。
(三) ^ も ち ろ ん こ れ は 記 数 法 に 依 存 し た 名 称 で あ る 。 本 文 で は 十 進 法 に お け る 性 質 を 説 明 し て い る が 、 十 二 進 法 に お い て ﹁ 五 捨 六 入 ﹂ と 呼 ば れ る で あ ろ う 処 理 は 通 常 の 半 数 切 り 上 げ で あ る 。
(四) ^ 一 般 に 関 数 の 数 値 計 算 の 場 合 、 . . . 0 0 0 の よ う に 0 が 続 い て い て も 、 下 の 桁 で 上 の 桁 か ら の 桁 借 り が 発 生 す る か も し れ な い 。 ま た l e x e r に よ る リ テ ラ ル の 読 込 み の 場 合 、 浮 動 小 数 点 数 の 表 現 と し て 本 来 あ り え な い 桁 ま で 記 述 さ れ て い る 、 X X X . . . X X
X . 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
と い っ た よ う な 場 合 の 下 の 桁 の 扱 い を ど う す べ き か 、 と い っ た 点 も 問 題 に な る ︵ 前 述 の よ う な ち ょ う ど 境 界 だ っ た 場 合 、 下 の 桁 は 必 ず し も 無 意 味 と は 言 え な い か も し れ な い ︶ 。
(五) ^ J I S Z 8 4 0 1 : 2 0 1 9 , p . 2 , 2 e ) ﹁ 数 値 を 示 す 場 合 、 常 に 丸 め の 幅 を 示 す こ と が 望 ま し い 。 ﹂
(六) ^ 偶 数 へ の 丸 め が 推 奨 さ れ て は お り 、 徐 々 に 標 準 と な っ て ゆ く と 思 わ れ る [ 要 出 典 ] 。 M i c r o s o f t の 一 部 の 環 境 な ど 、 仕 様 で 明 示 し て い る も の も あ る 。 し か し 、 C 9 9 も C + + 1 1 も J a v a も E C M A S c r i p t ( J a v a S c r i p t ) も 異 な る ル ー ル を 仕 様 に 定 め て い る 。
(七) ^ こ の フ レ ー ズ に 含 ま れ る ﹁ テ ー ブ ル メ ー カ ー ﹂ と は 、 ﹁ 数 表 ﹂ を 計 算 し 、 そ れ を 出 版 せ ん と 企 て る 者 、 と い う 意 味 で あ る 。 数 表 は 一 般 に 、 そ れ に 印 刷 さ れ て い る 桁 数 の 範 囲 内 は 必 ず 正 し い も の で な け れ ば な ら な い こ と が 要 求 さ れ る ︵ で あ ろ う ︶ と い う 背 景 が あ る 。 例 え ば 、 上 限 と 下 限 の 両 方 を 計 算 す る こ と で 結 果 が あ る 範 囲 内 に 必 ず あ る こ と を 保 証 す る と い っ た よ う な 手 法 が 、 数 表 の 正 確 さ の た め に 活 用 さ れ て き た 、 と い う 歴 史 が あ る 。