首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的十六进制字符串表示为浮点数

python中的十六进制字符串表示为浮点数
EN

Stack Overflow用户
提问于 2018-01-17 10:28:28
回答 1查看 1.7K关注 0票数 2

从python文档中可以看出,“十六进制字符串0x3.a7p10表示浮点数(3 +10.16+7.16**2)* 2.0**10或3740.0”,因此:

代码语言:javascript
复制
>>> float.fromhex('0x3.a7p10')

3740.0

然后

代码语言:javascript
复制
>>> float.hex(3740.0)

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

我的问题是如何使用上面的计算公式将“0x1.d380000000000p+11”转换成浮点数,以及为什么classmethod float.hex和classmethod float.fromhex给出了不同的表示。

谢谢你..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-17 10:44:14

'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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48298850

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档