📛
小数の四則演算をすると、どの言語も浮動小数点が出るのか?
多くのプログラミング言語では、小数(実数)の四則演算を行うと**浮動小数点数(float/double)**による計算となり、誤差が発生します。
これは、ほとんどの言語が内部的にIEEE 754規格の浮動小数点数を使って小数を表現しているためです。10進数の小数は2進数では正確に表現できない場合が多く、計算結果に微小な誤差が生じます。
例:
- C言語、JavaScript、Python、PHPなどでは、
0.1 + 0.2
の結果が0.3
ではなく0.30000000000000004
になることがあります。
ただし、すべての言語・すべての方法で必ず誤差が出るわけではありません。
- Pythonの
decimal.Decimal
やfractions.Fraction
、PHPのBCMath
など、任意精度の小数や分数型を使えば、誤差のない計算も可能です。
まとめ
- 一般的な言語の標準的な小数型(float/double)では、四則演算で浮動小数点誤差が必ず発生します。
- 任意精度型や分数型を使えば、誤差のない計算も可能です。
このため、精度が重要な場合は専用の型やライブラリを利用する必要があります。
Discussion