10進小数が有限桁の2進小数で表現できる条件

一つ前のエントリで調べたように、有理数 c/d は分母 d が自然数 r の素因数だけから構成される合成数であるとき、有限桁の r 進小数で表現できる。

具体的に数値を代入してみると、次のようになる。

  • 有限桁の2進小数で表現できる有理数の分母は 2 のベキ乗数である。つまり、ある有理数 c/d について、$d = 2^s$となるような自然数 s が存在するとき、c/d は有限桁の2進小数に展開できる。
  • 有限桁の10進小数で表現できる有理数の分母は 2 のベキ乗数と5のベキ乗数の積で表現される。つまり、ある有理数 c/d について、$d=2^t 5^u$となるような自然数 t, u が存在するとき、c/d は有限桁の10進小数に展開できる。

これらの性質から、n 桁の10進小数について、以下の性質が証明される。

[定理] n 桁の10進小数は、それを$10^m$倍して$5^n$の倍数にできるような自然数 m ≧ n が存在するとき、有限桁の2進小数で表現できる。

[証明] n 桁の10進小数は、$10^n$を分母とする有理数に変換できる。そのように変換したときの分子を c とする (これが元の数の$10^n$倍である)。c が$5^n$の倍数であるならば、分子と分母を$5^n$で約分できて分母が$2^n$となり、分母が2のベキ乗数となるため有限の2進小数へ変換可能である。

具体的な数を例示すると以下のようになる。以下では、aのb乗を a^b と書いている。

  • 0.1は、0.1 * 10 = 1 が 5^1 の倍数ではないので有限桁の2進小数で表現できない。
  • 0.2は、0.2 * 10 = 2 が 5^1 の倍数ではないので有限桁の2進小数で表現できない。
  • 0.25は、0.25 * 10^2 = 25 が 5^2 の1倍なので有限桁の2進小数で表現できる。
  • 0.875は、0.875 * 10^3 = 875 が 5^3 の7倍なので有限桁の2進小数で表現できる。

などなどである。