为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

泛舟湖上清波郎朗 2022-01-05 20:16:32
我有一些价格,如 5.35、10.91、15.55,我使用两位小数四舍五入Price = "{:.2f}".format(Price)但是我怎样才能使它们基于固定小数 0.50 和 0.90进行舍入并具有5.50、10.90、15.50谢谢
查看完整描述

3 回答

?
德玛西亚99

TA贡献1770条经验 获得超3个赞

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


查看完整回答
反对 回复 2022-01-05
?
红颜莎娜

TA贡献1842条经验 获得超12个赞

如果您有带有小数部分的浮点数,您可以使用第一个和第二个示例,其他所有数字(实际上是所有其他类型)您可以使用第三个和第四个。Num 是你的小数部分。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


查看完整回答
反对 回复 2022-01-05
?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

对于您提供的示例,此函数应该可以解决问题:


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 的情况下,您需要对此进行调整;)


查看完整回答
反对 回复 2022-01-05
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号