Powered by SmartDoc

24 数値計算と誤差

24.1 数値計算をするときは誤差に注意

int型などの整数で表現できる範囲には限りがある.

浮動小数点で表現できる範囲にも限りがある.

浮動小数点には丸め誤差がつきまとう.

上手に計算しないと桁落ちが生じる.

24.2 整数型のオーバフロー

short int型

int型

long int型

unsigned int型

24.3 浮動少数点型の誤差

浮動少数点型の丸め誤差:float型,double型,long double型丸め誤差

浮動少数点型のオーバフロー:float型とdouble型

24.4 桁落ち

非常に近い二つの数値の差を計算する際に生じる誤差.

上記の例のように,計算機ではある型で表現できる範囲が決まっている.話を簡単にするために,4桁しか表現できない場合を考える.

250.1 + 0.2432 - 250.0 = 0.3432 (24.4.1)

この式を左から順に計算すると,

250.1 + 0.2432 = 250.3432 - > 250.3 (24.4.2)
250.3 - 250.0 = 0.3 (24.4.3)

となり,本当の答え0.3432より一割以上小さな答えになってしまう!!

こういう場合は計算順序を考えて同じような大きさの値同士を先に計算する必要がある:

250.1 - 250.0 = 0.1 (24.4.4)
0.1 + 0.2432 = 0.3432 (24.4.5)