如何用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