新人エンジニアが知っておくべき「有限小数と無限小数」

こんにちは。ゆうせいです。

数学やプログラミングの数値を扱う上で、有限小数と無限小数という区分は非常に重要な概念です。結論から申し上げますと、これらの言葉は数学的に明確に定義されており、数値の性質を分類する際に頻繁に用いられます。

有限小数と無限小数の定義

小数は、小数点以下の桁数が限られているかどうかによって、大きく2つのグループに分けられます。

有限小数

有限小数とは、小数点以下の桁が途中で終わり、0以外の数字が続かなくなる小数を指します。

例えば、0.5や0.125、0.2などがこれに該当します。これらは分母が2や5のべき乗である分数として表現できるという特徴があります。

無限小数

無限小数とは、小数点以下の数字が無限に続く小数を指します。

無限小数は、さらに以下の2種類に分類されます。

  1. 循環小数:同じ数字の並びが繰り返し現れるもの(例:1/3 = 0.333...)
  2. 非循環小数:数字が不規則に並び、繰り返しが現れないもの(例:円周率 π = 3.14159...)

有理数は有限小数か循環小数のいずれかになりますが、無理数は必ず非循環な無限小数になります。

コンピュータにおける小数の扱い

エンジニアが開発を行う際、この有限と無限の差は「計算精度」という形で表面化します。

10進数と2進数の乖離

私たちが日常使う10進数では有限小数であっても、コンピュータが内部で扱う2進数に変換すると無限小数になってしまうケースがあります。

例えば、10進数の「0.1」は有限小数ですが、2進数では 0.0001100110011... と無限に繰り返される循環小数になります。

メモリによる打ち切り(デメリット)

コンピュータのメモリは有限であるため、無限に続く小数をすべて保持することはできません。そのため、どこかの桁で必ず数値を切り捨てる必要があります。

この処理により、本来の数値との間にわずかな差が生じ、これが累積することで計算結果に狂いが生じます。これが浮動小数点演算における精度の限界です。

学習のステップ

有限小数と無限小数の理解を実務に繋げるために、以下のステップで学習を継続してください。

  1. 2進数における「0.1」の表現方法を調べ、なぜ有限小数として扱えないのかという理屈を把握してください。
  2. 自身が扱うプログラミング言語で 0.1 + 0.2 を実行し、結果が正確に 0.3 になるかどうか、あるいは微小な誤差が含まれるかを確認してください。
  3. IEEE 754という浮動小数点数の標準規格について、そのビット構成がどのように有限の範囲で数値を近似しているのかを学習してください。

これらを通じて、プログラム上の数値が「理想的な数学の数」ではなく「メモリに制約された近似値」であることを意識できるようになります。

セイ・コンサルティング・グループでは新人エンジニア研修のアシスタント講師を募集しています。

投稿者プロフィール

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

学生時代は趣味と実益を兼ねてリゾートバイトにいそしむ。長野県白馬村に始まり、志賀高原でのスキーインストラクター、沖縄石垣島、北海道トマム。高じてオーストラリアのゴールドコーストでツアーガイドなど。現在は野菜作りにはまっている。