3

今日は、Pythonの条件を使用して数値を切り上げることについて質問があります。

私は販売ウェブサイトを運営していますが、クライアントは、米ドルからコロンビアペソに換算した結果に応じて価格を切り上げたいと考えています。例:200 USDからCOPは、353990 COPになり、359000に丸める必要があります。

彼はExcelでトリックを実行している関数を実装しました:

= IF(F4> = 10000000、(ROUNDUP(F4、-6)-100000)、IF(F4> = 1000000、(ROUNDUP(F4、-5)-10000)、IF(F4> = 100000、(ROUNDUP(F4 、-4)-1000)、IF(F4> = 10000、(ROUNDUP(F4、-3)-1000)、IF(F4> = 0、(ROUNDUP(F4、-3))))))))

私はまったく同じことをする必要がありますが、Pythonでそれを行う方法がわかりません。

私を助けてくれてありがとう!

4

2 に答える 2

5
import math
roundup = lambda x: math.ceil(x/1000.0) * 1000

353990を359000に丸めても意味がありません。この関数は、353990を354000に切り上げます。

「切り上げ」ではなく通常の丸めが必要な場合は、組み込みの関数を使用しますround

round(x, -3)

roundupしたがって、roundと同じ関数シグネチャを持つジェネリックの場合

def roundup(x, n=0):
    return math.ceil(x * (10**n)) * (10**-n)
于 2013-01-16T20:20:12.323 に答える
2
def round_up(value, multiple):
    return multiple * math.ceil(float(value) / multiple)

def digits(value):
    return int(math.log(value, 10)) + 1

def round_price(value):
    if value < 10000:
        return int(round_up(value, 1000))
    d = digits(value)
    new_value = int(round_up(value, 10 ** (d - 2)))
    new_value -= 10 ** (d - 3)
    return new_value
于 2013-01-16T20:49:32.023 に答える