繁体   English   中英

Python有条件地舍入数字

[英]Python conditionally round up numbers

今天我有一个问题,关于使用Python中的条件来舍入数字。

我正在做一个销售网站,我的客户希望根据结果将价格从美元兑换成哥伦比亚比索来收集价格。 例如:200美元到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中,我不知道如何做到这一点。

谢谢你的帮助!

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

虽然将353990舍入到359000毫无意义。 此功能将循环353990到354000。

如果你想正常的四舍五入,而不是一个“四舍五入”,你只需使用内置功能可按round

round(x, -3)

因此对于具有与round相同的函数签名的泛型roundup

def roundup(x, n=0):
    return math.ceil(x * (10**n)) * (10**-n)
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM