gpt4 book ai didi

python - Longdouble(1e3000) 变成 inf : What can I do?

转载 作者:行者123 更新时间:2023-11-28 20:42:32 25 4
gpt4 key购买 nike

(网络上其他大多数相关问题都涉及C的longdouble和python之间的转换。这个问题是不同的。)

我不明白为什么我不能像这样在 python 中正确获取 longdouble:

In [72]: import numpy as np

In [73]: np.longdouble(1e3000)
Out[73]: inf

看来我需要让我的 python 控制台知道 1e3000 是一个 longdouble 而不是 double。我该怎么做呢

最佳答案

问题在于,通过使用像 ...(1e3000) 这样的表达式,Python 解析器必须首先计算括号内的内容,并将结果传递给函数调用。 Long double 不是 native 类型,因此,括号内的值为 inf - 传递给 longdouble 构造函数。字符串版本失败的事实可能被认为是 NumPy 中的一个错误——它表明字符串在内部被转换为 Python float (在 C 中是“float64”或“double”),可能使用普通的 Python float 构造函数。

解决方法是首先构建 long double 对象,其值与 Python float 兼容,然后将其相乘以获得所需的值。如果您需要使用多个值来执行此操作,请使用 NumPy 数组而不是单个值:

>>> x = np.longdouble(10)
>>> x
10.0
>>> x **= 3000
>>> x
9.9999999999999999999e+2999

关于python - Longdouble(1e3000) 变成 inf : What can I do?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30419534/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com