【问题标题】:How to round up a value with any decimal如何用任何小数四舍五入一个值
【发布时间】:2014-06-04 21:03:25
【问题描述】:

我想让这个值不管它是什么总是四舍五入,所以例子:

Strength = 16.33333

我会用什么来使它(无论它等于什么)四舍五入到下一个整数?

【问题讨论】:

标签: python python-3.x decimal rounding python-3.3


【解决方案1】:

只需使用ceil函数:

>>> import math
>>> a = math.ceil(16.33333)
>>> a
17
>>> a = math.ceil(17)
>>> a
17

【讨论】:

  • 谢谢,但我发现很难将它应用到我必须制作的一些工作中。我必须对随机数起作用,然后再将它们四舍五入。因此,例如,我不知道可以输入“== 17”的数字是多少。
  • 你不必输入== 17!这只是告诉您ceil 函数结果的一种方式。
【解决方案2】:

另一种方法:

a if a.is_integer() else int(a)+1

【讨论】:

  • 它不适用于浮点格式的整数。例如:a = 20/2
【解决方案3】:

嘿,我之前回答过这个问题,但它并没有太大帮助。今天我意识到你仍然可以在不导入数学的情况下将整数/浮点数四舍五入到下一个数字。就这样做吧。

round(number+0.5)

无论您输入什么,即使它是整数或浮点数,它总是会四舍五入到下一个数字。

如果可以避免它们,我通常不喜欢使用导入!使用math.ceil() 方法将整数四舍五入的另一种方法。希望这会有所帮助!

【讨论】:

  • 它不适用于整数:round(17 + 0.5)18,而不是 17
【解决方案4】:
def round_up(number_):
    rounded = int(number_) if round(number_) == number_ else int(number_)+1
    return rounded

【讨论】:

    【解决方案5】:

    最简单的方法

    def round_up(number, downBelowZero = False):
        if(str(number).find(".")>-1):
            x = str(number).split(".")
            if(downBelowZero and number<0):
                return int(x[0])-1
            else:
                return int(x[0])+1
        
        else:
            return int(number)
    

    【讨论】:

    • 我们不能使用math function 来隐式处理所有边缘情况。
    猜你喜欢
    • 1970-01-01
    • 2011-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-29
    • 2023-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多