丸め誤差とは何か?小数点以下の数値をどう扱うかを知る!

目安時間:約 6分

プログラミングにおいて、悩ましいことの一つに「丸め誤差」があります。

 

この丸め誤差とはどのような誤差なのでしょうか?

 

この誤差の意味を理解することは、小数点以下の数値の扱い方を知ることになります。

 

複雑な計算式のみならず、単純な計算式においても、小数点いわゆる実数を扱う場面は多くあります。

 

ここで、プログラムを作成するうえで、小数点以下の数値をどう扱うのかを学んでください。

 

スポンサーリンク

 

丸め誤差とは何か?

丸め誤差とは、どのような誤差でしょうか?

 

丸めるという意味合いには、騙すとか丸め込むとか何かと一緒にするとか、あまり良いイメージがありません。

 

実は、この丸め誤差というのも、同じような意味合いになるのです。

 

持て余された小数点以下の数値を、騙したり、丸め込んだり、何かと一緒にするということなのです。

 

何を言いたいかというと、本当の数値を、違う数字にしてしまうということなのです。

つまり、騙したり、丸め込んだり、何かと一緒にしてしまうのです。

 

 

偽りの数値にするように丸め込むため、「丸め誤差」と呼んでいるのです。本来の数値と偽りの数値の差分を誤差といいます。

 

では、なぜこのように面倒な丸めをする必要があるのでしょうか?

 

理由は単純です。

 

人間がわかりやすいように数値を単純にしたいからなのです。

 

とかく、小数点以下の数値は人間にとって分かりづらいです。

 

また、循環小数のようにいったい本当の数値はどれなの?という場合もあります。

 

10÷3は、3.3333・・・となり、永遠と続きます。これでは、どう数値を扱ったら良いのか分からなくなります。

 

そこで、小数点以下の数値を何かしらで「丸める」ということが考えられたのです。

 

この「何かしら」の部分に該当するのが、よく知られている、「四捨五入」や「切り上げ」、「切り捨て」なのです。

 

小数点第三位を四捨五入または切り上げ、切り捨てし、第二位までを有効数値とするというように、小数点の桁を指定して、小数点以下の数値を扱うかを決めることを「丸め」と呼び、丸めることで出された数値と本来の数値との差分を「誤差」と呼びます。

 

これが、「丸め誤差」なのです。

 

スポンサーリンク

 

四捨五入・切り上げ・切り捨てとは?

小学校で習っているはずなので、あえてここでは、四捨五入などの説明は省略しますが、設計やプログラミングを行う上では、どういう意味をもつのか、その考え方を説明していきます。

 

設計は、仕様と呼ばれるものをもとにします。

 

何かしらの計算式が仕様としてまとめられているはずです。

 

例えば、成績の平均値や標準偏差、偏差値などの計算式がそれにあたります。

 

ここで、それぞれの計算式で、小数点以下をどう扱うかが仕様として決められているはずです。

 

四捨五入にするのか、切り上げるのか、切り捨てるのか。小数点以下は第何位までを採用するのかなどです。

 

つまり、各プロジェクトの仕様によって、小数点以下の数値をどう扱うかが異なるのです。

 

同じ平均値の計算式でも、プロジェクトAでは、小数点第三位を四捨五入、プロジェクトBでは、切り上げというように異なることがあるのです。

 

  • プロジェクトA:69.124 ---> 69.12(小数点第三位を四捨五入)
  • プロジェクトB:69.124 ---> 69.13(小数点第三位を切り上げ)

 

このように、丸める前の数値(69.124)は同じでも、小数点第三位の数値(4)をどう扱うかによって、結果が異なります(たまたま一致する場合もありますが)。

 

計算式が複雑になると、途中の式では、四捨五入で、途中は切り上げでなど、丸める方法も複合的になる場合があります。そうすると、バグが発生しやすくなります。

 

小数点を扱う計算式では、ひとつひとつ、丸め方を確認していかないと、最終的な計算結果が仕様と異なることになりますので、注意が必要です。

 

単体テストで、十分な検証を行ってください。これをおろそかにすると、後々とんでもない、障害を生むことになりますので。

 

丸め誤差による障害については、こちらを参照下さい。

障害(バグ)の直接原因・根本原因(3)丸め誤差を知る!

 

 

スポンサーリンク


カテゴリ:プログラミング 

ITエンジニアからコーチ・コンサル・カウンセラー・セラピストなどで起業してみませんか?
<管理人からのお知らせ>

ITエンジニアからコーチ、コンサル、カウンセラー、セラピストなどの起業家に転身している方が増えています。

管理人は、現在ネット集客コンサルタントとして活動しています。

ITエンジニアとしての強みを生かし、ネット集客システムを構築しながら、起業家に転身してみませんか?

Webから自動的にお客様(クライアント)を獲得し、安定的に稼げる方法をメルマガでお伝えしています。

興味があれば、下のメルマガ登録用バナーからメルマガ登録してください。

人気記事
プロフィール

こんにちは、管理人のあっきーです。

SE・プログラマになって30年の現役戦士です。

私が、30年のシステム開発経験で培ってきた困ったときの乗り越え方を教えます。

但し、対処法ではなく、私がお伝えするのは「思考法」です。

困ったときにこうすればよいという「行動」を教えても、その人にあうのかどうかはわかりません。ですから、「考え方」をお伝えするのです。

詳しいプロフィールは、
こちら。

最近の投稿
アーカイブ
カテゴリー
広告
ブログランキング参加しています。

ページの先頭へ