実数型の変数って、本当に実数を表現できているの?

実数型で整数?それって本当に「実数」なの?
こんにちは。ゆうせいです。
今回は、プログラミングの「実数型」と「整数型」という言葉について、一歩踏み込んだお話をしていきます。
テーマは、「実数型の変数って、本当に実数を表現できているの?」という疑問。とても良い視点ですね。
この話、実はプログラミングの根幹に関わる「データの表現方法」に直結しているんです。
では、見ていきましょう!
実数型と整数型の違いって何?
H3: 「整数型(int)」とは?
プログラミングにおいて、整数型(int)は、文字どおり小数点を持たない数を扱う型です。たとえば:
1
-50
123456
のような「まるい数」です。
高校数学でいうところの整数(Z:ゼット)に相当します。
そして、コンピュータ内部ではこれらの数を2進数(0と1)の並びで表現しています。
例えば、10
という数はコンピュータでは 00001010
のように保存されます。
H3: 「実数型(float)」とは?
一方、実数型(float あるいは double)は、小数点を含む数値を扱うための型です。たとえば:
3.14
-0.0001
1.0
(←これも実数型!)
高校数学でいうところの実数(R:アール)に近いですが、実際には完全には一致しません。
「実数型」は本当に実数を表現できるの?
ここが今日の本題ですね。
答えから言うと……完全には表現できません。
H3: コンピュータにとっての「実数」は「近似値」
コンピュータはメモリに限りがあるため、無限に続く小数(たとえば円周率πや√2など)を厳密に表すことはできません。
例:
π(円周率) = 3.1415926535...(無限に続く)
でも、コンピュータが扱えるのは例えば:
3.1415927 (float型:32ビット)
3.141592653589793 (double型:64ビット)
と、小数点以下の桁数に限界があるんです。
H3: 「実数型の整数」はどうなるの?
これが面白いところで、整数を実数型で表すことは「できる」けれど、誤差が入る可能性があります。
例:
float a = 1000000001;
int b = 1000000001;
この場合、a
(実数型)は32ビットで約7桁しか正確に扱えないため、1000000001 は 1000000000 に丸められてしまうこともあります。
H3: つまり、「実数型の整数」は「実数に似た何か」
実数型は、あくまで有限ビットでの近似的な実数表現です。
完全な実数(R)ではありません。
数学でいう実数は、たとえば無限に小さい数まで扱える連続的な量です。
でも、プログラムの中で使う実数型は、あくまで「それっぽい」もので、有限精度の制約があります。
実数型と整数型の比較表
項目 | 整数型(int) | 実数型(float / double) |
---|---|---|
扱える値 | 小数なしの整数 | 小数ありの実数(近似) |
精度 | 高い | 小数点以下に誤差あり |
使用ビット数 | 32ビットなど | float(32ビット)、double(64ビット) |
精度の上限 | ±2,147,483,647 | 約7桁(float)/約15桁(double) |
丸め誤差の可能性 | なし | あり |
例え話:電卓 vs 紙の計算
コンピュータの実数型は、ちょっと高性能な電卓みたいなものです。
電卓では「π」ボタンを押せば3.1415927...という数が出てきますが、それは「厳密なπ」ではありませんよね。
一方、数学での「実数」は、紙に書いて永遠に桁を追っていける理想の数です。
つまり、電卓(コンピュータ)は「近いけど完全ではない世界」を生きているのです。
数式で表すと?
例えば、次のような数式を考えてみましょう:
f(x) = x ÷ 3
これは数式としては無限小数になります。
読み方:エフ エックス イコール エックス わる 3
しかし、プログラムで x = 10
を入れても f(x)
は 3.333333
のように丸められた結果になります。
最後に:どう学んでいくといいの?
- 実数型は「近似値」であることをしっかり理解する
- 整数の扱いは整数型で、誤差が許されない場合は注意して選ぶ
- 浮動小数点誤差(丸め誤差)に注意するクセをつける
- 精度が求められる場合は「任意精度計算ライブラリ(BigDecimalなど)」の検討も
数の世界は一見シンプルに見えて、プログラムの中に入ると途端に奥深くなります。
「本当の数」と「コンピュータ上の数」の違いに敏感になることが、より良いプログラマーへの第一歩です。
次は、「浮動小数点数の誤差が生まれる具体的なメカニズム」や、「精度を保つための工夫」について掘り下げてみても良いかもしれません。
どんどん学んで、深掘りしていきましょう!
セイ・コンサルティング・グループの新人エンジニア研修のメニューへのリンク
投稿者プロフィール

- 代表取締役
-
セイ・コンサルティング・グループ株式会社代表取締役。
岐阜県出身。
2000年創業、2004年会社設立。
IT企業向け人材育成研修歴業界歴20年以上。
すべての無駄を省いた費用対効果の高い「筋肉質」な研修を提供します!
この記事に間違い等ありましたらぜひお知らせください。