Python はじめました:float.fromhex

Python.use(better) # Python はじめました記事一覧
float.fromhex

《著》小粒ちゃん+α《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/25 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

関連記事

float.fromhex〈Python 3.0 版〉

>>> print(float.fromhex.__doc__)
float.fromhex(string) -> float

Create a floating-point number from a hexadecimal string.
>>> float.fromhex('0x1.ffffp10')
2047.984375
>>> float.fromhex('-0x1p-1074')
-4.9406564584124654e-324

メソッド fromhex を利用すると、16進数で表現した文字列から float が得られます。それが有限の浮動小数点数なら、'0x' で始まり、'p' に続く指数部で表現されます。これは、10進数 15 を16進数で表現した 'e' との混乱を避けるためです。

def ex_fromhex():
    for e in "0123456789ABCDEF":
        X = 'float.fromhex("{0}.{0}")'.format(e)
        print(">>>",X)
        eval(compile(X,"_","single"))

その動作(仕様)を確認すると、

>>> ex_fromhex()
>>> float.fromhex("0.0")
0.0
>>> float.fromhex("1.1")
1.0625
>>> float.fromhex("2.2")
2.125
>>> float.fromhex("3.3")
3.1875
>>> float.fromhex("4.4")
4.25
>>> float.fromhex("5.5")
5.3125
>>> float.fromhex("6.6")
6.375
>>> float.fromhex("7.7")
7.4375
>>> float.fromhex("8.8")
8.5
>>> float.fromhex("9.9")
9.5625
>>> float.fromhex("A.A")
10.625
>>> float.fromhex("B.B")
11.6875
>>> float.fromhex("C.C")
12.75
>>> float.fromhex("D.D")
13.8125
>>> float.fromhex("E.E")
14.875
>>> float.fromhex("F.F")
15.9375

16進数で表現した文字列から浮動小数点数が得られます。ここで(小数点の前後に着目すると)16進数で表現した文字列 '0'〜'F' が10進数 0〜15 に相当して、文字列 '.0'〜'.F' が10進数 0.0625(=1/16) の倍数になっているのが分かります。

Last updated♪09/03/30