あちあち情報局

趣味や日曜プログラムなどを書いています

ユーザ用ツール

サイト用ツール


サイドバー

メニュー

現在リニューアル中

タグ一覧

memo:マイナス端数処理の注意

📝マイナス端数処理の注意

四捨五入・切り上げ・切り下げ・切り捨てなど端数処理(丸め)をする場合はマイナス値では2つの考え方があるので注意しましょう。


概要

マイナスの端数処理はゼロの扱いによって二方式あります。ここでは仮にA方式とB方式と命名し端数処理の例を表にすると下図のようになります。

正数A方式B方式
元の数字1.5-1.5-1.5
四捨五入2-2-1※
切り上げ2-2-1
切り下げ1-1-2
切り捨て1-1-2

※B方式の四捨五入は特殊なのでB方式の項目で説明します。


A方式の端数処理

A方式は天秤のようにゼロを起点にプラスとマイナスがつり合うような場合に使用します。数字の大きさはゼロ点を最小としてプラスでもマイナスでも数字が大きいほど大きいと考える方式です(単純に数値だけを取り出し端数処理をしてマイナス符号をつけたものがマイナス)。この方式ではプラスでもマイナスでも同じ数値で端数処理すればつり合います。

B方式の端数処理

B方式は温度のようにゼロを数字の一つとして扱う場合に使用します。温度は人間が勝手に目盛りをつけたものなのでマイナスになっても事象や現象に変化はありません、プラスではゼロが最小値・マイナスではゼロが最大値と考える方式です。この方法ではゼロ点で処理が変わらないので歪みが発生しません。(次項の比較を参照)

B方式のマイナス時の四捨五入は正確には四捨五入ではありません。下図のように六捨五入とでも言うような状態になります。

正数の四捨五入10.90.80.70.60.50.40.30.20.10
11(切り上げ)0(切り下げ)0
負数の四捨五入0-0.1-0.2-0.3-0.4-0.5-0.6-0.7-0.8-0.9-1
00(切り上げ)-1(切り下げ)-1

比較

両者の違いはグラフ化するとよくわかります。+5から-5まで0.1刻みで切り捨て処理を行った場合、B方式では綺麗な階段状態になりますが、A方式はゼロ付近に踊り場のある階段になります。

マイナス端数処理

まとめ

一般的には人間が端数処理を行う場合はプラスとマイナスをひっくり返すだけのA方式が簡単なのでよく使われますが、温度などは地域によって摂氏や華氏を使いゼロ点が異なるのでB方式で統一しないと正確なデータ比較ができません。

memo/マイナス端数処理の注意.txt · 最終更新: 2018/11/28 21:30 by 管理者