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
関連記事
- Built-in Types — Python v3.0.1 documentation float.fromhex()¶
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