如何使用python将浮点数四舍五入为固定的小数部分

时间:2019-04-10 12:10:39

标签: python

我有一些价格,例如5.35、10.91、15.55,我使用

用两位小数舍入
Price = "{:.2f}".format(Price) 

但是我如何基于固定的小数0.50和0.90使它们成为四舍五入的

5.50,10.90,15.50

谢谢

3 个答案:

答案 0 :(得分:1)

此函数应为您提供的示例提供帮助:

def fixed_round(number):
    decimal = number - int(number)
    if (abs(0.5 - decimal)) < (abs(0.9 - decimal)):
        return int(number) + 0.50
    else:
        return int(number) + 0.90

如果要四舍五入为整数,则在小数点更接近整数而不是0.5的情况下,您需要对此进行调整;)

答案 1 :(得分:1)

如果浮点数带有小数部分,则可以使用第一个和第二个示例,否则可以使用所有数字(实际上是所有其他类型),可以使用第三个和第四个示例。 数字是您的分数部分。 x是0.5,y是0.9

def round(num, x, y) :
    av = (x+y)/2
    if num < av :
        return x
    return y

或者如果您想传递数字15.98:

def round(num, x, y) :
    av = (x+y)/2
    if num % 1 < av :
        return int(num)+x
    return int(num)+y

您可以致电:

round(15.98,0.5,0.9)
  

输出:15.9

或类似的东西

def round(number):
    x=0.5
    y=0.9
    if type(number) is float: 
        av = (x+y)/2
        if number % 1 < av :
            return int(number)+x
        return int(number)+y
    return number

所有这些都在四舍五入。如果您想四舍五入,可以进行以下操作:

def round(number):
    x=0.5
    y=0.9
    if type(number) is float: 
        av = (x+y)/2
        from builtins import round as rd
        if rd(number % 1,2 ) < av :
            return int (number)+x
         return int (number)+y
     return number

答案 2 :(得分:-1)

import math


def weird_round(x):
    if round(x % 1, 1) >= 0.9:
        return math.floor(x) + 0.9
    return math.floor(x) + 0.5


prices = [5.35, 10.91, 15.55]

for price in prices:
    text = "{:.2f}".format(weird_round(price))
    print(price, '->', text)

5.35 -> 5.50
10.91 -> 10.90
15.55 -> 15.50