AIcicle Records
Tech
Python

【Python】数値を単位(K,M,G)表記に変換する!!

作成日:2025年06月27日
最終更新日:2025年09月07日

Webサイトの閲覧数やアプリのダウンロード数、金額などを表示するとき、「1234567」とそのまま表示するよりも「1.2M」と表示した方が、ぐっと直感的で分かりやすくなりますよね。

今回は、そんな数値の単位表記をPythonで簡単に実現する方法をご紹介します。コピペしてすぐに使える関数を作成しましたので、ぜひ活用してください!

実装コード

def format_unit(num, precision=1):
"""数値をK, M, G, Tなどの単位表記に変換"""
if not isinstance(num, (int, float)):
raise TypeError("数値ではありません。")
if num == 0:
return "0"
# 負数の処理
sign = '-' if num < 0 else ''
num = abs(num)
# 単位リスト(大きい順)
units = [
(1_000_000_000_000, 'T'), # テラ
18 collapsed lines
(1_000_000_000, 'G'), # ギガ
(1_000_000, 'M'), # メガ
(1_000, 'K'), # キロ
]
for unit_value, unit_symbol in units:
if num >= unit_value:
value = num / unit_value
formatted_value = f'{value:.{precision}f}'
# 小数点以下が0の場合は整数表示
if formatted_value.endswith(f'.{"0" * precision}'):
formatted_value = f'{int(value)}'
return f'{sign}{formatted_value}{unit_symbol}'
# 1000未満はそのまま
return f'{sign}{int(num) if num == int(num) else num}'

使い方と実行結果

この関数を使うと、こんな風に数値を変換できます。

print(format_unit(1234)) # → 1.2K ← すっきり!
print(format_unit(1000000)) # → 1M ← 一目瞭然!
print(format_unit(1850000, 2)) # → 1.85M ← 精度も自由自在
print(format_unit(1234567890)) # → 1.2G ← 10億超えもお任せ
print(format_unit(-5432)) # → -5.4K ← マイナスも対応

precisionパラメータにより、小数点以下の表示桁数を柔軟に調整できます。

実装のポイント

単位定義の順序設計

units = [
(1_000_000_000_000, 'T'), # テラ(1兆)
(1_000_000_000, 'G'), # ギガ(10億)
(1_000_000, 'M'), # メガ(100万)
(1_000, 'K'), # キロ(1千)
]

重要: 単位リストは降順(大きい順)で定義する必要があります。こうすることで、例えば 1,234,567 という数値が来たときに、まず T (1兆) や G (10億) のチェックをスキップし、M (100万) で正しく判定されるようになります。

動的フォーマット処理

Python 3.6から導入された f-string を使うと、文字列のフォーマットがとても簡単に書けます。

formatted_value = f'{value:.{precision}f}'

f-string記法を活用しています。{変数名:.{桁数}f} のように書くことで、変数を指定した小数点以下の桁数で表示できます。

表示最適化ロジック

if formatted_value.endswith(f'.{"0" * precision}'):
formatted_value = f'{int(value)}'

小数点以下がすべて0の場合(例:1.0M)は、整数表示(1M)に自動変換することで、より洗練された出力を実現しています。