Pythonでfloatをintへ変換する方法|int()・round()・math活用

🔄 Python float / int 変換シミュレーター

数値を入力し、変換方法を選択してください。Pythonが実際にどのように変換するかをリアルタイムで確認できます。

よく使われる値で試す:
3.14円周率
-2.7負の小数
0.5ちょうど半分
9.99価格例
1.9999境界値
-0.5負の半分
変換結果
コピーしました!
🕐 変換履歴(直近5件)
    よく使われる値で試す:
    42整数例
    0ゼロ
    -100負の整数
    1000000大きい整数
    変換結果
    コピーしました!
    🕐 変換履歴(直近5件)
      変換結果
      コピーしました!
      🕐 変換履歴(直近5件)
        変換結果
        コピーしました!
        🕐 変換履歴(直近5件)

          📚 変換方法の完全ガイド

          float → int の変換メソッド比較

          ⚠️ 重要: int()math.floor() は正の数では同じ結果になりますが、負の数では異なる結果になります。

          int(x)

          ゼロ方向へ切り捨て。小数部を単純に削除します。

          int(3.9) → 3
          int(-3.9) → -3

          math.floor(x)

          負の無限大方向へ切り捨て(床関数)。

          floor(3.9) → 3
          floor(-3.9) → -4

          math.ceil(x)

          正の無限大方向へ切り上げ(天井関数)。

          ceil(3.1) → 4
          ceil(-3.9) → -3

          round(x)

          銀行丸め(偶数丸め)。0.5は最も近い偶数へ。

          round(0.5) → 0
          round(1.5) → 2

          round(x, n)

          指定した小数点以下の桁数に丸めます。

          round(3.14159, 2) → 3.14

          int // 1

          整数除算を利用した切り捨て(floor相当)。

          3.9 // 1 → 3.0
          -3.9 // 1 → -4.0

          変換方法の違い一覧表

          入力値 int() math.floor() math.ceil() round() // 1
          3.033333.0
          3.133433.0
          3.533443.0
          3.933443.0
          -3.0-3-3-3-3-3.0
          -3.1-3-4-3-3-4.0
          -3.5-3-4-3-4-4.0
          -3.9-3-4-3-4-4.0
          0.50010(銀行丸め)0.0
          1.51122(銀行丸め)1.0
          2.52232(銀行丸め)2.0
          💡 銀行丸め(偶数丸め)とは: Pythonの round() は四捨五入ではなく、ちょうど0.5の場合は最も近い偶数に丸めます。これはIEEE 754標準に準拠した挙動です。例:round(0.5) = 0round(1.5) = 2round(2.5) = 2

          💻 実践コード例

          基本的な型変換

          # float → int 変換の基本パターン import math x = 3.14 # 切り捨て(ゼロ方向) result1 = int(x) # → 3 # 切り捨て(負の無限大方向) result2 = math.floor(x) # → 3 # 切り上げ(正の無限大方向) result3 = math.ceil(x) # → 4 # 四捨五入(銀行丸め) result4 = round(x) # → 3 # int → float 変換 n = 42 f = float(n) # → 42.0

          文字列からの数値変換(エラーハンドリング付き)

          # 安全な文字列 → 数値変換 def safe_to_int(s): try: return int(s) except ValueError: try: return int(float(s)) except ValueError: return None # 使用例 print(safe_to_int(“3.7”)) # → 3 print(safe_to_int(“abc”)) # → None print(safe_to_int(“1e2”)) # → 100

          数値フォーマット・文字列変換

          # 数値 → 文字列 フォーマット一覧 x = 1234.5678 str(x) # → “1234.5678” 基本変換 format(x, ‘.2f’) # → “1234.57” 小数2桁 format(x, ‘.0f’) # → “1235” 小数なし format(x, ‘,’) # → “1,234.5678” カンマ区切り format(x, ‘,.2f’) # → “1,234.57” カンマ+小数2桁 format(x, ‘e’) # → “1.234568e+03” 指数表記 format(x, ‘.2%’) # → “123456.78%” n = 255 format(n, ‘b’) # → “11111111” 2進数 format(n, ‘o’) # → “377” 8進数 format(n, ‘x’) # → “ff” 16進数

          特殊な値の変換

          # 特殊なfloat値の扱い import math # 無限大・NaN の確認 inf = float(‘inf’) nan = float(‘nan’) math.isinf(inf) # → True math.isnan(nan) # → True math.isfinite(3.14) # → True # int()は inf/nan に使えない(OverflowError/ValueError) try: int(inf) # OverflowError が発生 except OverflowError: print(“infはintに変換できません”) # 浮動小数点数の誤差例 print(0.1 + 0.2) # → 0.30000000000000004 print(round(0.1 + 0.2, 10)) # → 0.3

          📋 変換ステップと実例

          float → int:ステップ別解説

          ステップ 操作 コード例 結果 注意点
          値の確認 type(x) <class 'float'> 変換前に型を確認
          無限大/NaN確認 math.isfinite(x) True / False inf, nanはintに変換不可
          変換方法の選択 int / floor / ceil / round 用途に合わせて選ぶ
          変換実行 result = int(x) 整数値 小数部は完全に失われる
          型確認 type(result) <class 'int'> 変換後に型を確認

          よくある変換シナリオと推奨方法

          シナリオ 推奨方法 理由
          インデックスに使う int(x) int(3.9) → 3 単純な小数部削除
          切り上げ(ページ数など) math.ceil(x) ceil(3.1) → 4 余りがあれば+1ページ
          統計・金融計算 round(x, n) round(3.145, 2) → 3.14 精度保持が必要
          時刻(秒→分) math.floor(x) floor(125/60) → 2 切り下げで正確な分数
          文字列からの安全変換 try: int(s) int("3.14") → ValueError 例外処理が必須
          精度が重要な金融演算 decimal.Decimal Decimal("0.1") + Decimal("0.2") float誤差を回避

          🔢 int型とfloat型の特徴

          項目 int(整数型) float(浮動小数点数型)
          表現できる値 任意精度の整数(制限なし) 64ビット倍精度(IEEE 754)
          有効桁数 無制限 約15〜17桁
          表現範囲 メモリが許す限り無制限 ±1.8 × 10308
          最小正の値 1 約5.0 × 10-324
          誤差 なし(正確) 丸め誤差あり(例:0.1+0.2≠0.3)
          演算速度 大きい数は遅くなる場合あり 固定サイズで高速
          使用用途 カウント・インデックス・ループ 科学計算・測定値・割り算
          リテラル例 0, 42, -100, 10**20 3.14, 1.0, -0.5, 1e10
          特殊値 なし float('inf'), float('nan'), float('-inf')
          💡 Python 3の整数型は任意精度: Pythonのintは他の言語(C言語のintなど)とは異なり、ビット数の上限がありません。2 ** 1000のような巨大な数も正確に計算できます。

          ❓ よくある質問(FAQ)

          int()とmath.floor()の違いは何ですか?

          両者は正の数では同じ結果になりますが、負の数では異なります。

          int() はゼロ方向へ切り捨てます:int(-3.7) = -3

          math.floor() は負の無限大方向へ切り捨てます:math.floor(-3.7) = -4

          数学的な「床関数」が必要な場合は math.floor() を使いましょう。

          round(0.5)が0になるのはなぜですか?

          Pythonのround()は「銀行丸め(偶数丸め)」を採用しています。ちょうど0.5の場合は、最も近い偶数に丸めます。

          例:round(0.5) = 0(0は偶数)、round(1.5) = 2(2は偶数)、round(2.5) = 2(2は偶数)

          一般的な四捨五入が必要な場合は int(x + 0.5) または math.floor(x + 0.5) を使います。

          文字列”3.14″をintに変換できますか?

          int("3.14")は直接 ValueError になります。小数点を含む文字列は、まずfloat()に変換してからint()に変換する必要があります。

          int(float(“3.14”)) # → 3 ✓ OK
          int(“3.14”) # → ValueError ✗ エラー
          0.1 + 0.2が0.3にならないのはなぜですか?

          これはfloat型がIEEE 754の64ビット2進数浮動小数点数で表現されているためです。0.1や0.2は2進数では無限循環小数になるため、正確に表現できません。

          結果として 0.1 + 0.2 = 0.30000000000000004 となります。

          正確な十進数演算が必要な場合は decimal.Decimal モジュールを使用してください:Decimal("0.1") + Decimal("0.2") = 0.3

          float(‘inf’)やfloat(‘nan’)はintに変換できますか?

          int(float('inf'))OverflowErrorint(float('nan'))ValueError が発生します。変換前に math.isfinite(x) で確認することをお勧めします。

          import math
          x = float(‘inf’)
          if math.isfinite(x):
              result = int(x)
          else:
              print(“変換できません”)
          Python 2とPython 3では割り算の結果の型が違う?

          はい、大きな違いがあります。Python 2では 5 / 2 = 2(整数除算)でしたが、Python 3では 5 / 2 = 2.5(float)になります。

          Python 3で整数除算をしたい場合は //(floor除算)を使います:5 // 2 = 2

          🔗 関連する型変換と応用

          変換元 変換先 関数・方法 コード例 注意点
          float int int() int(3.14) → 3 小数部は切り捨て
          int float float() float(3) → 3.0 精度の低下なし
          str int int() int("42") → 42 小数点含む文字列は不可
          str float float() float("3.14") → 3.14 指数表記も変換可能
          int/float str str() str(42) → "42" 常に成功する
          int/float bool bool() bool(0) → False 0とNaN以外はTrue
          int 2進数文字列 bin() bin(10) → "0b1010" intのみ使用可
          int 16進数文字列 hex() hex(255) → "0xff" intのみ使用可
          int 8進数文字列 oct() oct(8) → "0o10" intのみ使用可
          float Decimal Decimal() Decimal("0.1") 文字列経由で精度保持
          Fraction float float() float(Fraction(1,3)) 有理数の近似値