Während der Übung zum Thema Float-Typ zu Fraction-Typ-Konvertierung in Python 3.52, fand ich den Unterschied zwischen den beiden verschiedenen Möglichkeiten der Konvertierung.Float-zu-Fraction-Konvertierung in Python
Die erste Methode ist:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> print(f)
2709702426188841/2199023255552 #Answer
Die zweite Methode ist:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(str(x))
>>> print(f)
123223/100 #Answer
ich den Grund für diese zwei verschiedene Antworten wissen? Sorry, wenn das eine dumme Frage ist, bin ich neu in der Programmierung und Python.
Edited: Ich habe einen Weg gefunden ungenaue Fraktion durch erste Methode, um ein genauen von limit_denominator
Verfahren erhalten zu konvertieren:
>>> from fractions import Fraction
>>> x = 1232.23
>>> f = Fraction(*x.as_integer_ratio())
>>> f = f.limit_denominator(100)
>>> print(f)
123223/100
Scheint wie eine genauere Antwort. Könnte das der Grund für diese Anamoly sein? '>>> 0.1 + 0.1 + 0.1-0.3' '5.551115123125783e-17' –
@AbdulHaseeb: Das ist nicht wirklich der Grund, der Grund ist, wie ich erklärte, die Zahlen, die ohne wiederholte Dezimalstellen in Basis dargestellt werden können 10 sind anders als diejenigen, die in Base-2 sein können. –