3

今天我有一个关于在 Python 中使用条件对数字进行四舍五入的问题。

我正在做一个销售网站,我的客户希望根据将价格从美元转换为哥伦比亚比索的结果来汇总价格。例如:200 USD to 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 回答