Python | 数値から特定の桁を取得する方法(小数点以下対応)

Python 数値・計算,Python

Python | 数値から特定の桁を取得する方法(小数点以下対応)

Pythonで数値から特定の桁を取得する方法とサンプルコードを紹介しています。

確認環境

Windows11 ローカル
Python python-3.11.1

数値から特定の桁を取得する(負数、小数点以下対応)

Pythonで小数点以下にも対応した数値から特定の桁を取得する方法とサンプルコードです。

このサンプルコードでは以下の手順で数値から特定の桁を取得する処理を実装しています。

  1. 対象の数値を変数「num」とする
  2. 取得する桁数を変数「digit」とする
  3. 小数点記号の位置を変数「decimal_point」とする
  4. str(abs(num))で文字列&整数にし、find('.’)で小数点記号の位置を取得
  5. 対象の桁数より大きな桁を取得しようとした際の例外処理をtry…except文で対応
  6. str(abs(num))で文字列&整数にし、小数点記号の位置を基準に桁の数を取得
  7. int()で得た数は文字列なので数値に変換
  8. 対象の桁数より大きな桁を取得しようとした場合の例外処理で0にする

取得する桁数は、「1の位は1」「10の位は2」「100の位は3」、少数以下の場合「小数点1位は-1」「小数点2位は-2」「小数点3位は-3」となるようにしています。

以下のサンプルコードでは100の位になる「3」を指定している為、「1」を取得します。

num = 123.456

# 取得する桁
digit = 3

# 小数点記号の位置
decimal_point = str(abs(num)).find(".")
if decimal_point == -1:
	decimal_point = len(str(abs(num)))


# 指定した桁の数を取得する
try:
	digit_num = int(str(abs(num))[decimal_point - digit])

# 対象の数値より指定した桁が大きかった場合は0にする
except IndexError:
	digit_num = 0

print(digit_num)
# 1

以下のサンプルコードでは少数以下2位となる「-2」を指定しているため「5」を取得します。

num = 123.456

# 取得する桁
digit = -2

# 小数点の位置
decimal_point = str(abs(num)).find(".")
if decimal_point == -1:
	decimal_point = len(str(abs(num)))


# 指定した桁の数を取得する
try:
	digit_num = int(str(abs(num))[decimal_point - digit])

# 対象の数値より指定した桁が大きかった場合は0にする
except IndexError:
	digit_num = 0

print(digit_num)
# 5

以下は上記コードで利用している関数や文法を処理内容と合わせて紹介しています。

関数など処理内容
abs()負数を正数に変換
・対象が負の数の場合、⁻を文字列にしてしまうのを防ぐ
str()数値を文字列に変換
・小数点記号の「.」も文字列にしている
find()指定文字・文字列の出現位置を取得
・小数点記号「.」の位置を取得している
int()文字列をint型に変換
・文字列での返り値を最後にint型に変換する
try…except文エラーによる例外処理
・対象の桁数より大きな桁を取得しようとした際の例外処理
・返り値を0にする
サンプルコードで利用している関数など