LoginSignup
0
0

More than 5 years have passed since last update.

X = 4.3 - 4.2 このとき、Xの値は?(前編)

Last updated at Posted at 2015-06-01

問題

X = 4.3 - 4.2
このとき、Xの値は?

解答

0.1

だがここで話が終わりではない

4.3 - 4.2 = 0.1
少なくとも筆者は、そう信じて今まで生きてきました。

ですが、そんな筆者の常識を打ち破るかのごとく、コンピュータがこの問題を「ふつうに」解くと、0.1にならない。

小数計算で発生する「誤差」
http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml

上記は、EXCELについての記事ですが、EXCELに限った話ではないそうです。

試してみた

試しに、色々な言語で、計算をしてみました。

PowerShell
4.3 - 4.2
#0.0999999999999996
JavaScript
document.write(4.3 - 4.2);
//0.09999999999999964
Ruby
puts 4.3 - 4.2
#0.09999999999999964
F#
4.3 - 4.2;;
//val it : float = 0.1
//一見正しそうに見えるが・・・
4.3 - 4.2 = 0.1;;
//val it : bool = false
//比較演算してみると、実際には誤差が生じていることが分かる
Haskell
4.3 - 4.2
--9.999999999999964e-2
SWI-Prolog
?- X is 4.3 - 4.2.
%X = 0.09999999999999964.
C
printf("%f",4.3-4.2);
//0.100000
//一見正しそうに見えるが・・・
printf("%d",4.3-4.2==0.1);
//0(false)
//比較演算してみると、実際には誤差が生じていることが分かる

こんなにも、4.3 - 4.2 = 0.1にならないなんて。
もしかして、逆に、私たちが今まで受けてきた教育が間違っていたのでは・・・と思いそうになりますが、ここで挫けてはいけません。
何と言おうと、4.3 - 4.2 = 0.1なのです。

後編では、この誤差への対策を、色々と試してみようと思います。


次回の記事
X = 4.3 - 4.2 このとき、Xの値は?(後編)

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0