Python 整数を任意の桁数で切り上げる自作関数

Python

Pythonの処理で小数点以下を切り上げる関数は存在しているが任意の桁数(例:百万の位など)を切り上げる関数は自分で処理しなければいけないので、備忘録として。

コード

まずはコードからご確認ください。

import math

def rui(num, digit): # Round Up Integer -> rui
    """
    Parameters
    ----------
    num = 切り上げたい数値
    digit = 上から何番目の桁を切り上げたいか

    Returns
    ----------
    rui_num = intの整数を返す
    """
    num = int(num)
    digit = digit - 1
    rui_num = num/(10**(len(str(num))-digit))
    rui_num = math.ceil(rui_num)
    rui_num = rui_num*(10**(len(str(num))-digit))

    return rui_num

処理概要

  1. 切り上げる数値の桁数を文字列にしてその文字数を取得
  2. 切り上げたい桁数(10^桁数)で一度割る
  3. 小数の数字にして、math.ceil()で切り上げる
  4. 再び掛け算して返り値として戻す

簡単な処理ですが、ライブラリとかで簡単にできたらいいのにと思いつつ、出来ないならできないで自分でなんとかしないとですね。。

小数点のある数字が入ってきても大丈夫なように対応しています。
上から何番目を切り上げたいか、という考え方をしているのは、大きな桁数を切り上げる時を想定しているためです。
例としては、予算の数値などで概算で4,567万円などと算出された時に、「上から2番目の桁を切り上げて大きめに見積もる」などを想定しているためです。

下から○番目の数値で切り上げたい、などの場合は、このコードをベースに自作してください。。

参考資料

Python で数値の桁数を求める
Python で数値内の桁数を求めるために使用できる主なメソッドは、math.log10()関数と len()関数の 2つです。
Pythonで小数点以下を切り捨て・切り上げ: math.floor(), math.ceil() | note.nkmk.me
Pythonで浮動小数点数floatの小数点以下を切り捨て・切り上げするには、標準ライブラリmathモジュールのfloor(), ceil()を使う。math.floor() --- 数学関数 — Python 3.8.1rc1 ドキュメント math.ceil() --- 数学関数 — Python 3.8.1rc1...

そのほか

有用な情報がありましたら、教えていただけますと幸いです。よろしくお願いいたします。

データサイエンティストの書評ブログ
趣味が読書くらいしかない駆け出しデータサイエンティストの書評ブログです。日々の勉強のアウトプットや趣味の読書のおすすめをしていきます。

コメント

タイトルとURLをコピーしました