Python float関数の使い方|小数への変換基礎

Python float関数の基本的な使い方から応用例まで初心者向けに解説。文字列や整数を小数に変換する方法、エラー処理、実践的な活用法を詳しく紹介。

Learning Next 運営
28 分で読めます

みなさん、Pythonで数値を小数に変換したいと思ったことはありませんか?

「文字列の"123.45"を小数にしたい」 「整数を小数として扱いたい」 「エラーが出た時はどうすればいいの?」

そんな疑問を持ったことがある方も多いはず。 でも大丈夫です!

この記事では、Python float関数の基本から実践的な活用法まで、初心者向けに分かりやすく解説します。 具体的なコード例とともに、一緒に理解していきましょう!

float関数って何?

float関数は、数値や文字列を小数(浮動小数点数)に変換してくれる便利な関数です。 簡単に言うと、データを小数の形に変えてくれます。

基本的な役割

まず、シンプルな例から見てみましょう:

# 整数を小数に変換
integer_value = 42
float_from_int = float(integer_value)
print(f"整数 {integer_value} → float: {float_from_int}")
# 文字列を小数に変換
string_value = "3.14"
float_from_string = float(string_value)
print(f"文字列 '{string_value}' → float: {float_from_string}")
# 引数なしだと0.0になる
default_float = float()
print(f"引数なし float() → {default_float}")

実行結果:

整数 42 → float: 42.0 文字列 '3.14' → float: 3.14 引数なし float() → 0.0

**float()**に値を入れると、その値を小数に変換してくれます。

float関数の特徴

float関数には、こんな特徴があります:

  • 様々なデータ型を小数に変換できる
  • 約15-17桁の精度を持つ
  • 非常に大きな数から小さな数まで表現可能
  • **無限大やNaN(非数)**も表現できる
# 様々な入力での変換例
examples = [
(42, "整数"),
(-15, "負の整数"),
("123.45", "小数の文字列"),
("1e3", "科学記法"),
(True, "ブール値 True"),
(False, "ブール値 False")
]
for value, description in examples:
result = float(value)
print(f"{description}: {value}{result}")

実行結果:

整数: 42 → 42.0 負の整数: -15 → -15.0 小数の文字列: 123.45 → 123.45 科学記法: 1e3 → 1000.0 ブール値 True: True → 1.0 ブール値 False: False → 0.0

いろんな種類のデータを小数に変換できるんです。

変換できるもの・できないもの

float関数で変換できるものと、できないものを見てみましょう:

変換できるもの

  • 整数(42, -15)
  • 小数(3.14, -2.5)
  • 数値の文字列("123", "45.67")
  • 科学記法の文字列("1e6", "2.5e-3")
  • ブール値(True, False)
  • 特殊値("inf", "nan")

変換できないもの

  • 非数値の文字列("hello", "abc")
  • 空文字列("")
  • リストや辞書([1, 2, 3], {"key": "value"})
  • None値
# 変換できない例
invalid_examples = [
"hello", # 文字列(非数値)
"", # 空文字列
"12.34.56", # 複数のドット
"1,234.56", # カンマ区切り
None # None値
]
for value in invalid_examples:
try:
result = float(value)
print(f"'{value}' → {result}")
except (ValueError, TypeError) as e:
print(f"'{value}' → エラー: 変換不可")

実行結果:

'hello' → エラー: 変換不可 '' → エラー: 変換不可 '12.34.56' → エラー: 変換不可 '1,234.56' → エラー: 変換不可 None → エラー: 変換不可

エラーが出るものもあることを覚えておきましょう。

基本的な変換方法

float関数の基本的な使い方を、具体例とともに学んでいきましょう。

整数から小数への変換

まず、整数を小数に変換する方法です:

# 基本的な整数→float変換
integer_examples = [
0, # ゼロ
42, # 正の整数
-99, # 負の整数
1000000 # 大きな整数
]
for integer in integer_examples:
float_result = float(integer)
print(f"int {integer} → float {float_result}")

実行結果:

int 0 → float 0.0 int 42 → float 42.0 int -99 → float -99.0 int 1000000 → float 1000000.0

整数が小数の形(.0付き)に変換されていますね。

なぜ整数をfloatに変換するの?

整数をfloatに変換する理由はいくつかあります:

# 1. 除算の精度
def calculate_average(numbers):
"""平均値を計算(float使用)"""
total = sum(float(num) for num in numbers) # 整数をfloatに変換
count = float(len(numbers))
return total / count
test_scores = [85, 92, 78, 88, 95]
average = calculate_average(test_scores)
print(f"テストスコア: {test_scores}")
print(f"平均点: {average:.2f}")
# 2. パーセンテージ計算
def calculate_percentage(part, total):
"""パーセンテージを計算"""
return (float(part) / float(total)) * 100
part = 25
total = 100
percentage = calculate_percentage(part, total)
print(f"{part}/{total} = {percentage}%")

実行結果:

テストスコア: [85, 92, 78, 88, 95] 平均点: 87.60 25/100 = 25.0%

小数にすることで、より正確な計算結果が得られます。

文字列から小数への変換

文字列を小数に変換する方法です:

# 様々な文字列形式の例
string_examples = [
"42", # 整数文字列
"3.14159", # 小数文字列
"-123.45", # 負の小数
"+99.99", # 明示的な正の符号
".5", # 整数部なし
"5.", # 小数部なし
"1e6", # 科学記法(1,000,000)
"2.5e-3" # 負の指数(0.0025)
]
for string_val in string_examples:
float_result = float(string_val)
print(f"文字列 '{string_val}' → float {float_result}")

実行結果:

文字列 '42' → float 42.0 文字列 '3.14159' → float 3.14159 文字列 '-123.45' → float -123.45 文字列 '+99.99' → float 99.99 文字列 '.5' → float 0.5 文字列 '5.' → float 5.0 文字列 '1e6' → float 1000000.0 文字列 '2.5e-3' → float 0.0025

文字列でも、数値として読める形なら変換できます。

空白文字の処理

文字列の前後に空白があっても、自動的に除去してくれます:

# 空白文字を含む文字列
whitespace_examples = [
" 42.5 ", # 前後の空白
" 3.14
", # タブと改行
" -123.45 ", # 負の数の前後空白
" 1e6 " # 科学記法の前後空白
]
print("空白文字は自動的に除去されます:")
for string_val in whitespace_examples:
float_result = float(string_val)
print(f"文字列 {repr(string_val)} → float {float_result}")

実行結果:

空白文字は自動的に除去されます: 文字列 ' 42.5 ' → float 42.5 文字列 ' 3.14 ' → float 3.14 文字列 ' -123.45 ' → float -123.45 文字列 ' 1e6 ' → float 1000000.0

前後の空白を気にしなくて大丈夫です。

実用的な例:ユーザー入力の処理

実際のプログラムでよく使われる、ユーザー入力の処理例です:

def safe_float_input(input_value, default=0.0):
"""安全にfloat入力を処理"""
try:
value = float(input_value)
return value, "成功"
except ValueError:
return default, "デフォルト値使用"
# テストデータ
test_inputs = ["123.45", "invalid", "", " 99.9 ", "-42.5"]
print("ユーザー入力の処理例:")
for input_str in test_inputs:
result, status = safe_float_input(input_str)
print(f" 入力: '{input_str}' → 結果: {result} ({status})")

実行結果:

ユーザー入力の処理例: 入力: '123.45' → 結果: 123.45 (成功) 入力: 'invalid' → 結果: 0.0 (デフォルト値使用) 入力: '' → 結果: 0.0 (デフォルト値使用) 入力: ' 99.9 ' → 結果: 99.9 (成功) 入力: '-42.5' → 結果: -42.5 (成功)

エラーが起きても、デフォルト値で処理を続けられます。

エラー処理と対策

float関数を使う時に起きるエラーと、その対処法を学びましょう。

ValueErrorが起きる時

ValueError(値エラー)は、変換できない値を渡した時に発生します:

# ValueError が発生するケース
error_cases = [
("", "空文字列"),
("abc", "非数値文字列"),
("12.34.56", "複数のドット"),
("1,234", "カンマ区切り"),
("12 34", "数値間のスペース"),
("$123.45", "通貨記号付き")
]
for value, description in error_cases:
try:
result = float(value)
print(f"{description}: '{value}' → {result}")
except ValueError:
print(f"{description}: '{value}' → ValueError発生")

実行結果:

空文字列: '' → ValueError発生 非数値文字列: 'abc' → ValueError発生 複数のドット: '12.34.56' → ValueError発生 カンマ区切り: '1,234' → ValueError発生 数値間のスペース: '12 34' → ValueError発生 通貨記号付き: '$123.45' → ValueError発生

こんな時にエラーが出ることを覚えておきましょう。

基本的なエラー処理

try-except文を使って、エラーを安全に処理できます:

def basic_float_conversion(value):
"""基本的なfloat変換(エラー処理付き)"""
try:
result = float(value)
return result, None
except ValueError as e:
return None, str(e)
# エラー処理のテスト
test_values = ["123.45", "invalid", "67.8", "", " 99.9 "]
print("基本的なエラー処理:")
for value in test_values:
result, error = basic_float_conversion(value)
if error:
print(f" '{value}' → エラー: 変換失敗")
else:
print(f" '{value}' → 成功: {result}")

実行結果:

基本的なエラー処理: '123.45' → 成功: 123.45 'invalid' → エラー: 変換失敗 '67.8' → 成功: 67.8 '' → エラー: 変換失敗 ' 99.9 ' → 成功: 99.9

エラーが起きても、プログラムが止まらずに処理を続けられます。

デフォルト値を使う方法

エラーが起きた時に、デフォルト値を返す方法です:

def safe_float_conversion(value, default=0.0):
"""安全なfloat変換(デフォルト値付き)"""
try:
return float(value)
except ValueError:
return default
# デフォルト値のテスト
test_values = ["123.45", "invalid", "67.8", "", "abc"]
print("デフォルト値を使用するパターン:")
for value in test_values:
result = safe_float_conversion(value, default=-1.0)
print(f" '{value}' → {result}")

実行結果:

デフォルト値を使用するパターン: '123.45' → 123.45 'invalid' → -1.0 '67.8' → 67.8 '' → -1.0 'abc' → -1.0

エラーが起きた時は、指定したデフォルト値が返されます。

実用的なエラー処理:設定値の読み込み

実際のプログラムでよく使われる、設定値の読み込み例です:

def load_config_with_validation(config_dict):
"""設定値の検証とフォールバック処理"""
defaults = {
"timeout": 30.0,
"max_retries": 3.0,
"threshold": 0.5
}
validated_config = {}
warnings = []
for key, default_value in defaults.items():
raw_value = config_dict.get(key)
if raw_value is None:
validated_config[key] = default_value
warnings.append(f"設定 '{key}' が見つかりません。デフォルト値を使用します。")
continue
try:
converted_value = float(raw_value)
validated_config[key] = converted_value
except ValueError:
validated_config[key] = default_value
warnings.append(f"設定 '{key}' の値が無効です。デフォルト値を使用します。")
return validated_config, warnings
# 設定検証のテスト
test_config = {
"timeout": "45.5",
"max_retries": "invalid",
"threshold": "0.75"
# "missing_key" は設定されていない
}
print("設定値の検証:")
print(f" 入力: {test_config}")
validated, warnings = load_config_with_validation(test_config)
print(f" 検証後: {validated}")
if warnings:
print(" 警告:")
for warning in warnings:
print(f" {warning}")

実行結果:

設定値の検証: 入力: {'timeout': '45.5', 'max_retries': 'invalid', 'threshold': '0.75'} 検証後: {'timeout': 45.5, 'max_retries': 3.0, 'threshold': 0.75} 警告: 設定 'max_retries' の値が無効です。デフォルト値を使用します。

エラーが起きても、適切にフォールバック処理が行われます。

実用的な活用例

float関数の実践的な使い方を、具体例とともに見てみましょう。

データ分析での活用

CSVファイルのデータを処理する例です:

def parse_csv_numbers(csv_line):
"""CSV行から数値を抽出してfloatに変換"""
items = csv_line.split(',')
numbers = []
errors = []
for i, item in enumerate(items):
cleaned_item = item.strip() # 空白除去
try:
number = float(cleaned_item)
numbers.append(number)
except ValueError:
errors.append((i, cleaned_item))
return numbers, errors
# CSVデータ処理のテスト
test_csv_lines = [
"1.5, 2.7, 3.9, 4.1", # 正常なデータ
"10, 20.5, invalid, 30.2", # エラーを含むデータ
" 1.1 , 2.2 , 3.3 " # 空白を含むデータ
]
print("CSVデータの処理:")
for csv_line in test_csv_lines:
numbers, errors = parse_csv_numbers(csv_line)
print(f" CSV: '{csv_line}'")
print(f" 数値: {numbers}")
if errors:
print(f" エラー: {errors}")

実行結果:

CSVデータの処理: CSV: '1.5, 2.7, 3.9, 4.1' 数値: [1.5, 2.7, 3.9, 4.1] CSV: '10, 20.5, invalid, 30.2' 数値: [10.0, 20.5, 30.2] エラー: [(2, 'invalid')] CSV: ' 1.1 , 2.2 , 3.3 ' 数値: [1.1, 2.2, 3.3]

CSVデータから数値を安全に抽出できました。

科学計算での活用

物理や数学の計算でfloat関数を使う例です:

def calculate_distance(x1, y1, x2, y2):
"""2点間の距離を計算(float使用)"""
import math
# 座標をfloatに変換
dx = float(x2) - float(x1)
dy = float(y2) - float(y1)
distance = math.sqrt(dx**2 + dy**2)
return distance
def calculate_circle_area(radius_str):
"""円の面積を計算"""
import math
try:
radius = float(radius_str)
if radius < 0:
return None, "半径は負の値にできません"
area = math.pi * radius**2
return area, None
except ValueError:
return None, "半径は数値で入力してください"
# 距離計算のテスト
coordinates = [
((0, 0), (3, 4)), # 3-4-5三角形
((1, 1), (4, 5)), # 一般的な座標
((-2, -3), (1, 1)) # 負の座標を含む
]
print("距離計算:")
for (x1, y1), (x2, y2) in coordinates:
distance = calculate_distance(x1, y1, x2, y2)
print(f" ({x1}, {y1}) から ({x2}, {y2}) の距離: {distance:.3f}")
# 円の面積計算のテスト
radius_inputs = ["5", "3.14", "invalid", "-2", "0"]
print("
円の面積計算:")
for radius_input in radius_inputs:
area, error = calculate_circle_area(radius_input)
if error:
print(f" 半径 '{radius_input}' → エラー: {error}")
else:
print(f" 半径 '{radius_input}' → 面積: {area:.2f}")

実行結果:

距離計算: (0, 0) から (3, 4) の距離: 5.000 (1, 1) から (4, 5) の距離: 5.000 (-2, -3) から (1, 1) の距離: 5.000 円の面積計算: 半径 '5' → 面積: 78.54 半径 '3.14' → 面積: 30.97 半径 'invalid' → エラー: 半径は数値で入力してください 半径 '-2' → エラー: 半径は負の値にできません 半径 '0' → 面積: 0.00

科学計算でも、適切にエラー処理しながら使えます。

Webアプリケーションでの活用

ユーザーからの入力を処理する例です:

def validate_numeric_inputs(inputs):
"""複数の入力値を検証"""
valid_numbers = []
invalid_inputs = []
for input_val in inputs:
try:
number = float(input_val)
valid_numbers.append(number)
except ValueError:
invalid_inputs.append(input_val)
return valid_numbers, invalid_inputs
def calculate_bmi(weight_str, height_str):
"""BMIを計算"""
try:
weight = float(weight_str) # kg
height = float(height_str) # m
if weight <= 0 or height <= 0:
return None, "体重と身長は正の値で入力してください"
bmi = weight / (height ** 2)
# BMI分類
if bmi < 18.5:
category = "低体重"
elif bmi < 25:
category = "普通体重"
elif bmi < 30:
category = "肥満(1度)"
else:
category = "肥満(2度以上)"
return (bmi, category), None
except ValueError:
return None, "体重と身長は数値で入力してください"
# 入力検証のテスト
test_inputs = ["123.45", "67.8", "invalid", "90.12", "", " 45.6 "]
valid, invalid = validate_numeric_inputs(test_inputs)
print("入力値の検証:")
print(f" 入力: {test_inputs}")
print(f" 有効な数値: {valid}")
print(f" 無効な入力: {invalid}")
# BMI計算のテスト
bmi_test_cases = [
("70", "1.75"), # 正常
("invalid", "1.75"), # 体重エラー
("70", "abc"), # 身長エラー
("-70", "1.75"), # 負の値
("70", "0") # ゼロ
]
print(f"
BMI計算:")
for weight, height in bmi_test_cases:
result, error = calculate_bmi(weight, height)
if error:
print(f" 体重{weight}kg, 身長{height}m → エラー: {error}")
else:
bmi, category = result
print(f" 体重{weight}kg, 身長{height}m → BMI: {bmi:.1f} ({category})")

実行結果:

入力値の検証: 入力: ['123.45', '67.8', 'invalid', '90.12', '', ' 45.6 '] 有効な数値: [123.45, 67.8, 90.12, 45.6] 無効な入力: ['invalid', ''] BMI計算: 体重70kg, 身長1.75m → BMI: 22.9 (普通体重) 体重invalidkg, 身長1.75m → エラー: 体重と身長は数値で入力してください 体重70kg, 身長abcm → エラー: 体重と身長は数値で入力してください 体重-70kg, 身長1.75m → エラー: 体重と身長は正の値で入力してください 体重70kg, 身長0m → エラー: 体重と身長は正の値で入力してください

Webアプリでも、安全にユーザー入力を処理できます。

まとめ

Python float関数について、基本から実践的な活用法まで詳しく解説しました。

重要なポイント

  • float関数は様々なデータ型を小数に変換
  • 整数、文字列、ブール値などが変換可能
  • 科学記法や特殊値にも対応
  • ValueErrorの適切な処理が重要

実践的な活用場面

  • データ分析でのCSV処理
  • 科学計算での座標・面積計算
  • Webアプリでのユーザー入力処理
  • 設定ファイルの値検証

エラー処理のコツ

  • try-except文で安全に処理
  • デフォルト値でフォールバック
  • 適切な警告メッセージの表示

float関数を適切に使うことで、数値データの処理を効率的かつ安全に行えます。 最初は基本的な変換から始めて、徐々にエラー処理や実践的な応用に挑戦してみてください。

ぜひ実際のプログラムで、今回学んだfloat関数を活用してみてくださいね! きっと数値処理がもっと楽しくなるはずです。

関連記事