Python >> Tutoriel Python >  >> Python

Python flottant décimal en octal

Formulation du problème : Étant donné un nombre flottant. Comment le convertir en représentation octale ?

Exemples  :Considérez les conversions souhaitées suivantes à partir des nombres décimaux flottants vers leurs nombres octaux flottants convertis.

input:     3.14
output:    3.1075

input:     0.01
output:    0.005

input:     12.325
output:    14.246

Vous pouvez jouer avec quelques exemples ici :

Solution :La fonction de code suivante float_to_octal() prend un argument flottant x à convertir et un argument facultatif num_digits qui définit le nombre de chiffres du flottant octal converti. Il renvoie l'octal converti en tant que valeur flottante.

L'idée est de convertir d'abord la partie entière du flottant, par exemple 3 pour 3,14, puis de convertir la partie fractionnaire après le chiffre décimal. Vous bouclez sur chaque chiffre et déterminez son chiffre octal correspondant que vous collectez dans la variable de liste digits .

Enfin, vous convertissez la liste de chiffres en nombre octal résultant en utilisant le string.join() et format() les fonctions.

def float_to_octal(x, num_digits = 4):
    '''Converts a float number x to an float octal number.'''

    whole = int(x)
    fraction = (x - whole) * 8

    # Convert first digit
    digit = int(fraction)
    fraction = (fraction - digit) * 8
    digits = [str(digit)]

    # Convert remaining digits
    i = 1
    while fraction and i < num_digits:
        digit = int(fraction)
        fraction = (fraction - digit) * 8
        digits.append(str(digit))
        i += 1
        
    return float("{:o}.{}".format(whole, "".join(digits)))

print(float_to_octal(3.14))
print(float_to_octal(0.01))
print(float_to_octal(12.325))

Sortie :Voici la sortie des appels de fonction sur les nombres décimaux 3,14, 0,01 et 12,325.

3.1075
0.005
14.2463

Voici une autre stratégie pour convertir le flottant décimal 3.14 en un nombre octal :

Pour améliorer vos compétences en Python, rejoignez notre académie gratuite par e-mail (nous avons des aide-mémoire ;)) :

Références :

  • https://stackoverflow.com/questions/40035361/how-do-i-convert-float-decimal-to-float-octal-binary
  • https://www.rapidtables.com/convert/number/decimal-to-octal.html