Hier ist die Lösung, Erklärung unten:
def ToLessThanOne(num): # Change "num" into a decimal <1
while num > 1:
num /= 10
return num
def FloatToOctal(flo, places=8): # Flo is float, places is octal places
main, dec = str(flo).split(".") # Split into Main (integer component)
# and Dec (decimal component)
main, dec = int(main), int(dec) # Turn into integers
res = oct(main)[2::]+"." # Turn the integer component into an octal value
# while removing the "ox" that would normally appear ([2::])
# Also, res means result
# NOTE: main and dec are being recycled here
for x in range(places):
main, dec = str((ToLessThanOne(dec))*8).split(".") # main is integer octal
# component
# dec is octal point
# component
dec = int(dec) # make dec an integer
res += main # Add the octal num to the end of the result
return res # finally return the result
So können Sie print(FloatToOctal(12.325))
an tun d es wird 14.246314631
schließlich heraus drucken, wenn Sie weniger Oktal Orte wollen (Dezimalstellen aber in Oktal) fügen Sie einfach die places
Argument: print(FloatToOctal(12.325, 3))
die 14.246
kehrt als korrekt ist nach dieser Website: http://coderstoolbox.net/number/
Was ist das für ? Können Sie einige Beispiele für die gewünschte Eingabe und Ausgabe angeben? Die Darstellung von Float-Werten in Oktal ist eine sehr ungewöhnliche Sache. Für Binärdateien können Sie einfach 'float.hex' verwenden und dann Zeichenfolgenoperationen verwenden, um jede hexadezimale Zahl durch ihre binäre 4-Bit-Entsprechung zu ersetzen. –
@MarkDickinson zum Beispiel: ich habe ein float '12.325' und ich sollte float octal' 14.246' (gerundet) bekommen. Ich habe keine Idee, wie man es macht – MaxLunar
Danke für das Beispiel; es wäre nützlich, das in die Frage selbst zu bearbeiten. Kannst du auch erklären, was du mit "float octal" meinst. Haben Sie eine bestimmte Ziel-Gleitkommadarstellung vor Augen oder wollen Sie einfach einen Wert, der sowohl mit einem ganzzahligen Teil als auch mit einem gebrochenen Teil oktal geschrieben ist? –