在Python中将十六进制字符串表示为浮点数 [英] Hexadecimal string representation to floating number in python

查看:0
本文介绍了在Python中将十六进制字符串表示为浮点数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

来自PYTHON文档的内容是"十六进制字符串0x3.a7p10表示浮点数(3+10./16+7./16**2)*2.0**10,或3740.0",因此:

>>> float.fromhex('0x3.a7p10')

3740.0

然后

>>> float.hex(3740.0)

'0x1.d380000000000p+11' (will give different presentation)

我的问题是,如何使用上面的计算公式将‘0x1.d38000000000000p+11’转换为浮点数,以及为什么类方法Float.hex和类方法Float.Fromhex给出了不同的表示。

谢谢...

推荐答案

'0x1.d380000000000p+11'表示(1 + 13./16 + 3./16**2 + 8/16**3) * 2.0**11,等于3740.0。要转换此结果,可以再次运行float.fromhex('0x1.d380000000000p+11')返回3740.0

float.hex为您提供了标准化表示,这意味着2**x前面的因子介于1和2之间。解释器所做的是将二进制表示中的逗号移位一个位置:增加指数(从10增加到11),并减半因子(0x3.a7 / 2 = 0x1.d38)。

通常,在此标准化表示中,前面的因子介于1和基数之间。例如,如果您使用print(2234.2e-34),则会得到2.2342e-31。这里的主导因子介于1和10之间,因为e对应于10**x

这篇关于在Python中将十六进制字符串表示为浮点数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆