अजगर में, 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')
नहीं मिल सकता है। किसी भी सहायता की सराहना की जाएगी!
काफी नहीं। 'Decimal.decimal' अभी भी फ़्लोटिंग पॉइंट है, यह केवल बेस -10 फ़्लोटिंग पॉइंट है। 'दशमलव (1)/दशमलव (3) 'एक सटीक उत्तर नहीं दे सकता है। –