丸め誤差
数字の誤差だよ
桁の省略によって生じるよ
切り上げ・切り捨て・四捨五入などで生じるよ
簡単に書くよ
丸め誤差(読:マルメゴサ 英:roundoff error)とは
例えば「10.31」を「10.3」として扱うことにしたときの「0.01」のように、切り上げなり切り捨てなり四捨五入なりして「ここから先の桁は見ないことにするね」としたのが原因で生じる誤差のこと
です。
詳しく書くよ
サクっと一言で説明すると
数字の(小数点以下の)桁を省略したときに生じる、本来の値とのズレ
が「丸め誤差」です。
みなさんが一番イメージしやすいのは円周率ですかね。
本来、円周率は「3.1415926535..」と続いていきます。
ですが実際には「3.14」くらいで計算するのが一般的です。
そうすると切り捨てた「0.0015926535..」の分だけ本来の計算結果とズレますよね。
このズレが丸め誤差です。
丸め誤差は切り上げ・切り捨て・四捨五入などで発生します。
※この3つで生じる場合がほとんどだとは思いますが、五捨六入とか八捨九入とかした場合も丸め誤差に該当すると思うので「など」としておきます。
例えば「10.38」の小数点以下2桁目を切り捨てて「10.3」とした場合の丸め誤差は「0.08」です。
もし「×2」する計算をしたとしたら「20.76(=10.38×2)」と「20.6(=10.3×2)」の差である「0.16」が丸め誤差になります。
「10.38」の小数点以下2桁目を四捨五入して「10.4」とした場合の丸め誤差は「0.02(-0.02?)」です。
もし「×2」する計算をしたとしたら「20.76(=10.38×2)」と「20.8(=10.4×2)」の差である「0.04(-0.04?)」が丸め誤差になります。
「10.31」の小数点以下2桁目を切り上げて「10.4」とした場合の丸め誤差は「0.09(-0.09?)」です。
もし「×2」する計算をしたとしたら「20.62(=10.31×2)」と「20.8(=10.4×2)」の差である「0.18(-0.18?)」が丸め誤差になります。
このような
桁を省略したことによって生じる、本来の値とのズレ
が丸め誤差です。
ちなみに、個人的には整数で生じた誤差も「丸め誤差」と呼べると思っています。
例えば「128」を「100」として扱う場合は「28」の丸め誤差が発生するという解釈です。
本来1の位まであった数字を100の位までの数字として(1の位と10の位を省略して)扱ったことによって生じる誤差ですよね?
丸め誤差の話が出てくるのは小数の話が大部分ですけどね。
気が向いたら、頭の片隅にでも置いておいてあげてください。
あと、コンピュータさんの世界では丸め誤差が現実世界より少しだけ身近にあります。
コンピュータさんの世界は2進数(「2」になると桁上がりする数字)の世界だからです。
10進数(「10」になると桁上がりする数字)の小数を2進数の小数として扱うのは、めんどっちーのです。
例えば、そうですね。
10進数の「0.75」を2進数に変換すると「0.11」になります。
もしコンピュータさんがポンコツで小数点以下1桁までしか扱えなかったら、どうなると思いますか?
小数点以下1桁しか扱えないコンピュータさんは「0.11」を「0.1」として扱います。
小数点以下2桁目に気付けないからです。
2進数の「0.1」を10進数に変換すると「0.5」になります。
おやおや「0.75」が「0.5」になってしまいましたよ。
「0.25(=0.75-0.5)」がどこかに行ってしまいました。
かなり単純化して説明しましたが、10進数の小数を2進数に変換すると、すこーーーーしだけ誤差が出たりします。
そのため、たまに意図しない形で丸め誤差の影響を受ける場合があります。
ご注意ください。
一言でまとめるよ
まぁ「丸め誤差」って単語が出てきたら「(小数点以下の)桁を省略したときに生じる誤差なんだな~」と お考えください。






