Python 在NumPy中,如何使用大于float64';最大值是多少?

Python 在NumPy中,如何使用大于float64';最大值是多少?,python,numpy,python-3.7,numpy-ndarray,Python,Numpy,Python 3.7,Numpy Ndarray,我有一个计算结果,可能会产生非常非常大的数字,这些数字不适合float64。我曾考虑过使用np.longdouble,但这也可能不够大 我对精度不太感兴趣(我只需要8位数字)。小数部分不合适。我需要有一个数组 有没有一种方法可以表示/保存一个无限大小的数字,比如说,只受可用内存的限制?或者,如果没有,我可以在numpy数组中放置的绝对最大值是多少?您能否重新进行计算,使其与数字的对数一起工作 这就是内置浮动在任何情况下的工作原理 您只需将数字转换回线性以显示,此时您将分离整数和小数部分;小数部分

我有一个计算结果,可能会产生非常非常大的数字,这些数字不适合
float64
。我曾考虑过使用
np.longdouble
,但这也可能不够大

我对精度不太感兴趣(我只需要8位数字)。小数部分不合适。我需要有一个数组


有没有一种方法可以表示/保存一个无限大小的数字,比如说,只受可用内存的限制?或者,如果没有,我可以在numpy数组中放置的绝对最大值是多少?

您能否重新进行计算,使其与数字的对数一起工作

这就是内置浮动在任何情况下的工作原理


您只需将数字转换回线性以显示,此时您将分离整数和小数部分;小数部分按正常值进行幂运算,得到8位精度,整数部分进入“×10”ⁿ" 或“×e”ⁿ“或”×2ⁿ“输出的一部分(取决于您使用的底对数)。

您是否可以重新进行计算,使其与数字的对数一起工作

这就是内置浮动在任何情况下的工作原理


您只需将数字转换回线性以显示,此时将整数和小数部分分开;小数部分按正常情况进行幂运算,以获得8位精度,整数部分进入“×10”ⁿ“或”×eⁿ“或”×2ⁿ“输出的一部分(取决于您使用的基对数)。

来自numpy文档:numpy提供的数据类型精度不超过C的长双精度;特别是128位IEEE四精度数据类型(FORTRAN的REAL*16)不可用。为了有效的内存对齐,np.longdouble通常以零位填充存储,可以是96位或128位。效率更高取决于硬件和开发环境;通常在32位系统上填充为96位,而在64位系统上通常填充为128位。np.longdouble是填充的在系统默认情况下,np.float96和np.float128是为需要特定填充的用户提供的。尽管名称不同,但np.float96和np.float128的精度仅与np.longdouble相同,即在大多数x86机器上为80位,在标准Windows版本中为64位。请注意,即使np.longdouble提供的精度高于python float,很容易失去额外的精度,因为python经常强制值通过float。例如,%格式化运算符要求将其参数转换为标准python类型,……数字不是在内部自动舍入吗?并且只需要8位精度吗?如果是这样,float64是否会提供r应该是15位精度,够了吗?我对这个主题不太熟悉,所以可能我遗漏了一些东西。@Tyson是的,小数部分对我来说是个问题。但是使用日志可以解决它。无论如何,谢谢!@Ehsan是的,我看到了。但是正在寻找解决方法。我将按照下面的建议使用日志。谢谢!来自numpy doc:numpy不提供一种比C的长双精度数据类型精度更高的数据类型;特别是128位IEEE四精度数据类型(FORTRAN的REAL*16)不可用。为了有效的内存对齐,np.longdouble通常以零位填充存储,可以是96位或128位。效率更高取决于硬件和开发环境;通常在32位系统上填充为96位,而在64位系统上通常填充为128位。np.longdouble是填充的在系统默认情况下,np.float96和np.float128是为需要特定填充的用户提供的。尽管名称不同,但np.float96和np.float128的精度仅与np.longdouble相同,即在大多数x86机器上为80位,在标准Windows版本中为64位。请注意,即使np.longdouble提供的精度高于python float,很容易失去额外的精度,因为python经常强制值通过float。例如,%格式化运算符要求将其参数转换为标准python类型,……数字不是在内部自动舍入吗?并且只需要8位精度吗?如果是这样,float64是否会提供r应该是15位精度,够了吗?我对这个主题不太熟悉,所以可能我遗漏了一些东西。@Tyson是的,小数部分是我的问题。但是使用日志可以解决它。无论如何,谢谢!@Ehsan是的,我看到了。但是正在寻找解决方法。我将按照下面的建议使用日志。谢谢!