首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python有条件地集合数字

Python有条件地集合数字
EN

Stack Overflow用户
提问于 2013-01-16 20:14:17
回答 2查看 2.4K关注 0票数 3

今天,我有一个问题要问您如何使用Python中的条件来舍入数字。

我正在做一个销售网站,我的客户想要收集价格取决于结果转换他们从美元到哥伦比亚比索。例如: 200美元对COP的结果在353990 COP,它应该四舍五入到359000。

他实现了一个在Excel中实现这个功能的函数:

=IF(F4>=10000000,(F4,-6)-100000),IF(F4>=1000000,(综合报告(F4,-5)-10000),IF(F4>=100000,(综述(F4,-4)-1000),IF(F4>=10000,(综合报告(F4,-3)-1000),IF(F4>=0,(综合报告(F4,-3)

我需要做同样的事情,但用Python,我不知道怎么做。

谢谢你帮我!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-01-16 20:49:32

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2013-01-16 20:20:12

代码语言:javascript
复制
import math
roundup = lambda x: math.ceil(x/1000.0) * 1000

虽然353990到359000之间是没有意义的。这个函数的整数为353990至354000。

如果你想要正常的四舍五入而不是“整整”,你只需要使用内置函数round

代码语言:javascript
复制
round(x, -3)

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

代码语言:javascript
复制
def roundup(x, n=0):
    return math.ceil(x * (10**n)) * (10**-n)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14366992

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档