C++の浮動小数点型を完全解説!float・double・long doubleの精度と違いを初心者向けにやさしく説明
生徒
「C++で小数を使おうとしたら、floatとかdoubleとか出てきました。数字なのに何が違うんですか?」
先生
「小数を扱うときは、数字の細かさがとても重要になります。C++では、その細かさによって使う型が分かれているんです。」
生徒
「細かさって、どういう意味ですか?パソコンを触ったことがなくても理解できますか?」
先生
「大丈夫です。定規やメモ帳の例えを使って、floatやdoubleの違いを順番に説明しますよ。」
1. 浮動小数点型とは何か
C++の浮動小数点型とは、小数を含む数字を扱うためのデータ型です。 データ型とは、数字や文字などの情報をパソコンの中に保存するための入れ物の種類のことです。 整数型が整数専用の箱だったのに対して、浮動小数点型は小数点付きの数字を入れる箱になります。
例えば、身長、体重、気温、金額の計算などでは、小数を使う場面が多くあります。 こうした数字を正しく扱うために、C++ではfloat、double、long doubleという浮動小数点型が用意されています。
浮動小数点という言葉は難しく感じますが、「小数点の位置が動く数字」と考えるとイメージしやすくなります。 小数点の位置を自由に動かせることで、とても大きな数字やとても小さな数字も表現できるようになっています。
2. 精度とは何かをやさしく理解する
浮動小数点型を理解するうえで重要なのが精度という考え方です。 精度とは、「どこまで細かく数字を表せるか」という意味です。 初心者の方は、定規の目盛りを思い浮かべると分かりやすくなります。
目盛りが粗い定規では、長さを大まかにしか測れません。 逆に、目盛りがとても細かい定規なら、より正確な長さが分かります。 浮動小数点型も同じで、型によって数字をどれだけ細かく表現できるかが決まっています。
精度が低いと計算結果に誤差が出やすくなり、精度が高いほど正確な計算ができます。 ただし、精度が高い型ほど、パソコンの中で多くのメモリを使います。
3. float型の特徴と注意点
float型は、最も基本的な浮動小数点型です。 小数を扱うことはできますが、精度はそれほど高くありません。 例えるなら、目盛りがやや粗い定規を使って測っている状態です。
float型は、細かさよりも処理の軽さを重視する場面で使われます。 例えば、簡単な計算や大まかな数値で十分な場合に向いています。 しかし、細かい計算をすると、思った通りの結果にならないことがあります。
#include <iostream>
int main() {
float value = 0.1f + 0.2f;
std::cout << value << std::endl;
return 0;
}
0.300000
この例では、見た目は〇点三になっていますが、内部では完全に正確な値ではありません。 float型では、このような小さな誤差が起きやすいことを覚えておくと安心です。
4. double型がよく使われる理由
double型は、float型よりも精度が高い浮動小数点型です。 名前の通り、floatよりも倍くらい細かく数字を表現できます。 定規で言えば、目盛りがとても細かくなった状態です。
C++では、小数を扱うときに特別な理由がなければdouble型がよく使われます。 精度と使いやすさのバランスが良く、多くの計算で安心して使えるためです。
#include <iostream>
int main() {
double price = 19.99;
double tax = 0.1;
std::cout << price * tax << std::endl;
return 0;
}
1.999
double型は、金額計算や測定値など、ある程度の正確さが必要な場面に向いています。 初心者の方は、小数を扱うときはまずdoubleを選ぶと覚えておくと迷いにくくなります。
5. long double型はどんなときに使うか
long double型は、さらに高い精度を持つ浮動小数点型です。 非常に細かい数字まで表現できるため、科学計算や高度な計算で使われます。
ただし、long double型は環境によって精度が異なることがあります。 また、初心者が使う場面はほとんどありません。 とても正確な計算が必要になったときに存在を思い出す程度で問題ありません。
#include <iostream>
int main() {
long double pi = 3.141592653589793238L;
std::cout << pi << std::endl;
return 0;
}
3.14159
long double型では、数値の後ろにLを付けることで、高精度の数値であることを示します。 扱える桁数が多い分、計算も重くなることを覚えておきましょう。
6. 浮動小数点型の使い分けをどう考えるか
浮動小数点型の使い分けで大切なのは、「どれくらい正確な数字が必要か」を考えることです。 大まかな計算でよければfloat型、迷ったらdouble型を選ぶと失敗しにくくなります。
long double型は特別な場合に使うものと考えて問題ありません。 C++の変数とデータ型を理解することは、プログラミングの基礎になります。 小数の精度の違いを知ることで、思わぬ計算ミスを防ぐことができます。
パソコンを触ったことがない方でも、定規や箱のたとえで考えることで、 float、double、long doubleの違いは少しずつ理解できるようになります。 焦らず、数字の扱いに慣れていきましょう。