Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

continued_fraction uses float division, producing invalid terms for large integers and raising OverflowError

Offen Anfängerfreundlich
#15,655 2 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 2 Tagen

@trleo arbeitet bereits daran.

Seit 28.10.2026.

Bewertung

Schwierigkeit
1/5
Geschätzter Aufwand
Unter einer Stunde
Anfängerfreundlichkeit
88/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
tooling

Rechercherichtung

Öffne maths/continued_fraction.py und sieh dir die Schleife an, die jeden Term berechnet: Der Quotient wird mit floor(numerator / denominator) gebildet, was zuerst nach float konvertiert. Reproduziere es mit dem Snippet im Issue, ersetze diesen Schritt durch ganzzahlige Floor-Division, damit exakte Brüche beliebiger Größe funktionieren, und prüfe, dass continued_fraction(Fraction(2**53 + 3)) [9007199254740995] zurückgibt und der Fall 10**400 / 3 nicht mehr überläuft. Fertig bedeutet, dass sich beide Beispiele korrekt verhalten und negative Brüche weiterhin einen korrekten Kettenbruch ergeben.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Repository commit

6e03a48579ca212a08b36be00378f887dc41a003

Python version (python --version)

Python 3.11.0, macOS

Dependencies version (pip freeze)

The reproduction uses only Python's standard library; no third-party dependencies are involved.

Expected behavior

continued_fraction(Fraction(2**53 + 3)) should return [9007199254740995], the continued fraction of that integer. Large exact fractions should not fail merely because they exceed floating-point range.

Actual behavior

Run from the repository root:

from fractions import Fraction
from maths.continued_fraction import continued_fraction

print(continued_fraction(Fraction(2**53 + 3)))
try:
    print(continued_fraction(Fraction(10**400, 3)))
except OverflowError as exc:
    print(type(exc).__name__ + ':', exc)

Output:

[9007199254740996, -1]
OverflowError: integer division result too large for a float

The first result represents the same integer numerically, but is not the regular continued fraction: the trailing term is negative because the first quotient was rounded upward.

In maths/continued_fraction.py, floor(numerator / denominator) first converts the integer ratio to a float. This loses precision for sufficiently large values and can overflow. Computing the quotient directly with integer floor division (numerator // denominator) preserves exact arithmetic and also handles negative fractions.

I searched existing issues and PRs for continued fraction and continued_fraction; I did not find an existing report of this problem.

Vorherrschende Sprache
Python
Sterne
225k
Forks
51.2k
Ø Merge
1 T. 13 Std.
Gemergte PRs (30 T.)
32

Entwicklungsumgebung

In Codespaces öffnen

Startet den Dev-Container des Projekts im Browser, mit Ihrem eigenen GitHub-Konto.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus TheAlgorithms/Python

Alle Issues in TheAlgorithms/Python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.