使用python';如何用十六进制数初始化mpf?

使用python';如何用十六进制数初始化mpf?,python,mpmath,Python,Mpmath,我想将一个非常大的十六进制数加载到mpmath的一个mpf对象中。我试过了 from mpmath import mp, mpf a = mpf('0x100') # starting small here 但它出现了故障: ValueError: could not convert string to float: '0x100' 简单地使用长整数常量似乎也会失去精度: >>> mpf.prec = 300 >>> a = mpf( 0x12344444

我想将一个非常大的十六进制数加载到mpmath的一个mpf对象中。我试过了

from mpmath import mp, mpf
a = mpf('0x100') # starting small here
但它出现了故障:

ValueError: could not convert string to float: '0x100'
简单地使用长整数常量似乎也会失去精度:

>>> mpf.prec = 300
>>> a = mpf( 0x123444444444444444444444444444444444444444444444444444444444444)
>>> print("%x"%a)
123444444444440000000000000000000000000000000000000000000000000
>>> a = mpf( 123444444444444444444444444444444444444444444444444444444444444)
>>> print("%d"%a)
123444444444444452865502098927835995454229086812688745177808896

从十六进制字符串初始化mpf实例的正确技术是什么?

Python通过使用前缀来理解十六进制;你几乎成功了:只需删除引号:

a = mpf(0x100) # starting small here
现在在哪里中断取决于你的数字有多大。如果它不适合Python整数,则会自动升级为长整数(任意长度(在Python 3中,这是默认值)。因此,它应该“直接工作”,而不需要担心特殊的数据类型。
只要你有足够的内存,你应该能够处理任何十六进制数。

我肯定会专门使用。我正在尝试验证python生成的OpenCL源代码,该代码可以进行固定精度的计算(想想384或1600位).0x100只是一个玩具盒。我的目标是有96个十六进制数字。@Bob我理解。我为你做了一点研究,并更新了答案:Python不会关心(在一定程度上)你的数字有多少位数,它会处理它。我试图实现你的想法,但发现了另一个故障(现在添加到问题中)。您有有效的代码示例吗?您是在尝试使用整数或浮点数的十六进制表示形式吗?