MaxLunar - 8 months ago 38

Python Question

I have been searched everywhere to find a way to convert float to octal or binary. I know about the

`float.hex`

`float.fromhex`

For example: I have a float

`12.325`

`14.246`

Answer

Here's the solution, explanation below:

```
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 you can do `print(FloatToOctal(12.325))`

and it shall print out `14.246314631`

Finally, if you want less octal places (decimal places but in octal) simply add the `places`

argument: `print(FloatToOctal(12.325, 3))`

which returns `14.246`

as is correct according to this website: http://coderstoolbox.net/number/

Source (Stackoverflow)