编程语言
首页 > 编程语言> > 如何用Python中的x DP将小数写为十进制?

如何用Python中的x DP将小数写为十进制?

作者:互联网

我正在寻找的是一种将python Fraction()类型写出到任意数量的小数位的方法.我已经查看了Fraction和Decimal的python文档,但我看不到任何转换或写出Fraction的方法.

所以我正在寻找的是一些打印方式

Fraction(5, 7)

0.7142857142857142857142857142857142857142857142857142

代替

>> float(Fraction(5, 7))
0.7142857142857143

指定DP的数量.

解决方法:

使用Decimal类可以获得任意精度.

from fractions import Fraction
from decimal import localcontext, Decimal

def print_fraction(f, digits):
    assert(f.imag == 0)

    # Automatically reset the Decimal settings
    with localcontext() as ctx:
        ctx.prec = digits
        print(Decimal(f.numerator) / Decimal(f.denominator))

f = Fraction(5, 7)
print_fraction(f, 52)

这将打印0.7142857142857142857142857142857142857142857142857143.

标签:fractions,python,precision,printing,decimal
来源: https://codeday.me/bug/20190902/1787921.html