Similar to the int
data type, floats
also have several additional methods useful in various scenarios.
For example, you can directly check if the float number is actually an integer with is_integer()
:
>>> (5.9).is_integer()
False
>>> (-9.0).is_integer()
True
Integer values might be preferred over floats in some cases and you can convert a float
to a tuple
matching a fraction with integer values:
>>> (-5.5).as_integer_ratio()
(-11,2)
# -11 / 2 == -5.5
As floats’ numbers representation in binary is not really human-friendly and tends to be lengthier with precision, the hexadecimal format is preferred. Such hexadecimal representations have the form:
[sign]['0x']int['.' fraction]['p' exponent]
# e.g 0x1.8000000000000p+0 -> 1.5
# 1.5 in decimal is 1.8 in hex
# 0 - sign
# int - str of hex. digits of integer part
# fraction - same for fractional part
To convert a float number to a hex string you can use the hex() function.
>>> (3.14).hex()
'0x1.91eb851eb851fp+1'
>>> float.hex(1.5)
'0x1.8000000000000p+0'
The reverse can be achieved with the fromhex() class method:
>>> float.fromhex('0x1.91eb851eb851fp+1')
3.14
>>> float.fromhex('0x1.8000000000000p+0')
1.5