Python Umwandlung von reeller Bruchzahlen in ein anderes Zahlensystem

WirJun

Cadet 3rd Year
Registriert
Aug. 2014
Beiträge
32
Hallo Leute,

ich habe die Aufgabe ein Programm in Python zu entwickeln, das eine vom Benutzer eingegeben reelle Dezimalzahl in ein anderes Zahlensystem [Basis 2 bis 9] umwandelt

Ein Programm für die Ganzzahl habe ich schon geschrieben.
Code:
dezimal = int(raw_input("Bruchzahl eingeben: "))
basis = int(raw_input("Basis eingeben: "))


ergebnis = 0
zahl = dezimal
faktor = 1

while (dezimal):
	rest = dezimal % basis
	dezimal = dezimal / basis
	
	faktor *= 10
	ergebnis = ergebnis + rest * faktor
print "eingegebene Zahl", zahl, "- neue Zahl mit der Basis %d" % (basis) , ergebnis/10


Das Problem ist jedoch der Nachkommateil, vielleicht kann mir jemand einen Tipp geben?

Danke WirJun ;)
 
Danke für den Link, nur muss ich selber ein Programm schreiben...
 
Hast du mal bei miacs Link ganz nach unten gescrollt? Da steht eine ziemlich gute Erklärung, die du nur noch zu implementieren brauchst.

Achja was du umwandeln willst, ist übrigens eine rationale Bruchzahl und keine Reelle (*Klugscheissermodus off*).
 
Zuletzt bearbeitet:
Genau.

Der "Wie Geht das" Knopf ist aber auch schon cool. Wüßte nicht, wie man das besser beschreiben soll.
 
Hi Leute ich habe mich jetzt nochmals rangewagt und den Nachkommateil geschrieben, nur ist hier ein Fehler drin. Vielleicht kann mir jemand helfen:

Code:
print "reeller Dezimal-Konvertierer\n"
dezimal = float(raw_input("Bruchzahl eingeben: "))
basis = int(raw_input("Basis eingeben: "))


dezimalneu = dezimal
ergebnis = 0
zahl = int(dezimal) / 1
faktor = 1

while (dezimal):
	rest = int(dezimal) % basis
	dezimal = int(dezimal) / basis
	
	faktor *= 10
	ergebnis = ergebnis + rest * faktor


dezimalneu = dezimalneu - zahl
ergebnis2 = 0
faktor2 = 1


while (dezimalneu > 0):
	rest2 = dezimalneu * basis
	dezimalneu = dezimalneu * basis
	faktor2 = faktor2 * 10
	if (dezimalneu > 0):
		dezimalneu = dezimalneu - rest2	
	ergebnis2 = ergebnis2 + rest2 / faktor2

ergebnisfinal = ergebnis + ergebnis2


print "eingegebene Zahl", zahl, "- neue Zahl mit der Basis %d =" % (basis) , ergebnisfinal/10
 
Hallo liebe community.

Hat das vielleicht jemand gelöst bekommen. WirJun ist leider nicht mehr aktiv.
 
An was fehlt es denn? Der Link von miac ist immer noch gültig und erklärt ein mögliches Vorgehen ziemlich gut:
Ein Dezimalbruchteil 0,.. soll in ein anderes System umgewandelt werden.

Gehe nach folgendem Verfahren vor, um die Nachkommaziffern zu erhalten:
(1) Multipliziere die Dezimalzahl mit der neuen Basis
(2) Die Zahl vor dem Komma ist die nächste Ziffer des Ergebnisses
(3) Schneide die Zahl vor dem Komma weg.
(4) Wiederhole ab (1), bis der Rest 0 ist, sich ein Rest wiederholt
oder die gewünschte Genauigkeit erreicht ist.
 

Ähnliche Themen

Zurück
Oben