首页 > 解决方案 > 如何使用小数在变量中的分隔符后设置和保留 2 位数字?

问题描述

我正在尝试创建一个用于计算费用的小应用程序。它已经适用于浮点数,但我认为使用小数可以使代码更加清晰和简单。只是一个小例子来说明我遇到的问题:

    import decimal
    decimal.getcontext().prec = 2
    print ("{}".format(decimal.Decimal(1)/decimal.Decimal(3)))

输出是 0.33 和 2 位是我需要的。

让我们将第一个数字从 1 增加到 10:

    import decimal
    decimal.getcontext().prec = 2
    print ("{}".format(decimal.Decimal(10)/decimal.Decimal(3)))

输出是 3.3,这不是我需要的那种表示。我仍然希望分隔符后有两位数:3.33 而不是 3.3。我尝试了不同的方法,比如使用 localcontext,但没有成功:

    from decimal import Context, localcontext, Decimal
    with localcontext(Context(2)):
        print((Decimal("10") / 3))

所以,正如我所见,decimal.getcontext().prec 如果变量 < 1 定义分隔符后的位数,或者如果变量 > 0 定义总位数。我想知道一些简单的解决方案是否总是保持 2 位数分隔符存在后?这种情况似乎很普遍,我相信应该有一个简单而优雅的解决方案在我面前找到。

更新: 似乎描述不够清楚,因此,我的问题与另一个问题有关。让我们尝试澄清一下:) 我正在寻找一种方法来在开始时定义数据格式并在之后保留它,而不是每次进行除法或乘法运算时都使用 quantize() 。quantize() 仅解决一个变量的问题,此后不应更改此变量。例如,如果我有 10 次操作,那么我应该使用 quantize() 10 次,这似乎并不有效,在这种情况下,我没有看到更改代码和使用小数而不是浮点数的重要理由。

标签: python-3.xdecimal

解决方案


推荐阅读