How to Convert Float Number (Fraction) to Hexadecimal in Python?

  • 时间:2020-09-28 16:28:51
  • 分类:网络文摘
  • 阅读:130 次

We known that in Javascript, we can use the toString(16) to convert an integer to its hexadecimal representation. That works even for float numbrs, for example,

1
2
3
4
5
6
(0.5).toString(16)
"0.8"
(1.5).toString(16)
"1.8"
(0.3).toString(16)
"0.4ccccccccccccc"
(0.5).toString(16)
"0.8"
(1.5).toString(16)
"1.8"
(0.3).toString(16)
"0.4ccccccccccccc"

In python, you can do this using the following function FloatToHex that will print at most (by default) 16 decimal places in hexadecimal form.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import sys
 
def FloatToHex(x, k = 16):
    if x < 0: 
        sign = "-"
        x = -x
    else:
        sign = ""
    s = [sign + str(int(x)) + '.']
    x -= int(x)
    for i in range(k):
        y = int(x * 16)
        s.append(hex(y)[2:])
        x = x * 16 - y
    return ''.join(s).rstrip('0')
 
if __name__ == "__main__":
    print(FloatToHex(float(sys.argv[1])))
import sys

def FloatToHex(x, k = 16):
    if x < 0: 
        sign = "-"
        x = -x
    else:
        sign = ""
    s = [sign + str(int(x)) + '.']
    x -= int(x)
    for i in range(k):
        y = int(x * 16)
        s.append(hex(y)[2:])
        x = x * 16 - y
    return ''.join(s).rstrip('0')

if __name__ == "__main__":
    print(FloatToHex(float(sys.argv[1])))

Examples:

# python3 FloatToHex.py 0.5
0.8
# python3 FloatToHex.py 0.6
0.99999999999998
# python3 FloatToHex.py 0.3
0.4ccccccccccccc
# python3 FloatToHex.py 2.3
2.4cccccccccccc
# python3 FloatToHex.py -2.3
-2.4cccccccccccc

The complexity is O(1) if we consider the string manipulation is also O(1) and the hex function in Python runs at O(1) constant.

python How to Convert Float Number (Fraction) to Hexadecimal in Python? code code library programming languages python

python

–EOF (The Ultimate Computing & Technology Blog) —

推荐阅读:
难过|小学作文  端午节可真有意思  小学生日记端午节  天天感恩节|小学作文  中秋节英语  难忘的一次中秋节  森林艺术节  各地的清明节习俗  艺术节的演出  清明节缅怀先烈 
评论列表
添加评论