Pythonで浮動小数点の10進数を8進数に変換する方法
浮動小数点形式の10進数と、小数部の桁数が与えられたとき、その値を8進数に変換するのが本記事の目的です。
変換の基本的な流れは以下の通りです。まず浮動小数点値から整数部分を取り出して8進数に変換し、次に小数部分を8進数に変換し、最後に両者を結合します。
変換の手順
ステップ1:整数部分の変換
整数部分を8で割り続け、商が8未満になるまで余りを記録していきます。そして、得られたすべての余りを並べることで8進数表現が完成します。これは一般的な「除算による基数変換」の手法です。
ステップ2:小数部分の変換
小数部分に対しては、逆に8を掛け続けます。掛け算を行うたびに整数部分を記録し、残った新しい小数部分に対して再度8を掛けるという操作を、小数部分が0になる(または指定された桁数に達する)まで繰り返します。こうして得られた整数部分の列が、小数部分の8進数表現となります。
サンプルコード
def float_convert_octal(my_number, places = 3):
my_whole, my_dec = str(my_number).split(".")
my_whole = int(my_whole)
my_dec = int (my_dec)
res = oct(my_whole).lstrip("0o") + "."
for x in range(places):
my_whole, my_dec = str((decimal_converter(my_dec)) * 8).split(".")
my_dec = int(my_dec)
res += my_whole
return res
def decimal_converter(num):
while num > 1:
num /= 10
return num
n = input("Enter the floating point value : \n")
p = int(input("Enter the number of decimal places of the result : \n"))
print(float_convert_octal(n, places = p))
実行結果
Enter the floating point value : 6.89 Enter the number of decimal places of the result : 12 6.707534121727
このコードでは、まず入力された浮動小数点値を文字列として「.」で分割し、整数部分と小数部分に分けています。整数部分は組み込み関数 oct() を使って簡単に8進数へ変換でき、接頭辞「0o」を除去した上で結果に追加します。小数部分については、decimal_converter() 関数で正規化した後、8倍を繰り返しながら各桁の数字を取り出し、指定された桁数分だけ結果文字列に連結しています。
-
Pythonで10進数を2進数に変換する方法|再帰処理とbin()関数の実装例
この記事では、「10進数を2進数に変換する」という問題に対する解決策を、具体的なコード例とともにわかりやすく解説します。 問題の概要 問題: 与えられた10進数の整数を、それに対応する2進数表現へ変換する。 この問題を解くには、大きく分けて2つのアプローチがあります。順番に見ていきましょう。 方法1:再帰を使った実装 10進数を2進数に変換する基本的な考え方は、「数値を2で割り続け、その余りを記録する」ことです。再帰関数を使うと、除算を繰り返しながら余りを自動的に上位の桁から順に出力できます。 サンプルコード def DecimalToBinary(num): if num &g
-
Pythonで10進数を2進数に変換する方法|再帰と組み込み関数の2つのアプローチ
この記事では、10進数で表された数値を2進数に変換するPythonプログラムについて、その考え方と具体的な実装方法をわかりやすく解説します。 問題文 ある整数が与えられたとき、その数値を2進数に変換します。例えば、10進数の「35」は2進数では「100011」と表現されます。 アプローチ1:再帰を使った解法 再帰処理を利用すると、シンプルなコードで10進数を2進数に変換できます。基本的な流れは以下の擬似コードのとおりです。 DecToBin(num): if num > 1: &n