在Python中,存在fractions.Fraction
和decimal.Decimal
標準庫類,以幫助精確計算有理數。對於不熟悉的,在哪裏它有助於例如:將fractions.Fraction轉換爲decimal.Decimal的最佳方法?
>>> 1/10 * 3
0.30000000000000004
>>> decimal.Decimal('1')/10 * 3
Decimal('0.3')
>>> fractions.Fraction('1')/10 * 3
Fraction(3, 10)
我的問題是,如果我有一個Fraction
,什麼是將其轉換爲一個Decimal
的最佳方式?
不幸的是,明顯的解決方案不起作用:
>>> decimal.Decimal(fractions.Fraction(3, 10))
Traceback (most recent call last):
...
TypeError: conversion from Fraction to Decimal is not supported
現在,我使用此代碼:
>>> decimal.Decimal(float(fractions.Fraction(3, 10)))
Decimal('0.299999999999999988897769753748434595763683319091796875')
現在,當我真正輸出這個值,四捨五入意志的任何量將其轉換爲0.3,並且我只在輸出之前立即執行此轉換(所有核心數學都通過Fraction
完成)。儘管如此,我似乎有點傻,我無法從Fraction(3, 10)
獲得Decimal('0.3')
。任何幫助,將不勝感激!
「在Python中,'fractions.Fraction'和'decimal.Decimal'標準庫中的類存在,以幫助保持算術精確有理數。」不完全的。 'Decimal.decimal'仍然是浮點數,它只是基數爲10的浮點數。 '小數(1)/小數(3)'不能給出準確的答案。 –