python - 为什么 -inf 当计算表达式是受控的
问题描述
我正在使用变量值进行计算:
b=49277625229919252619702799653707265870395898977145078030839752
n=22112825529529666435281085255026230927612089502470015394413748319128822941402001986512729726569746599085900330031400051170742204560859276357953757185954298838958709229238491006703034124620545784566413664540684214361293017694020846391065875914794251435144458199
c=-3.2029790664620333e+67
我正在计算的值是:
B = (b + (n - b*b) * c)
这不应该返回-inf
,因为我不受内存空间的限制(我有超过 10 场演出,我正在这样做)。
这个问题可以解决吗?
编辑:我也想知道发生这种情况的原因,这样我就可以避免未来的不幸。
解决方案
您的操作返回-inf
,因为它超出了float
. 您可以使用sys.float_info.max
检查实现支持的最大浮点值。一般这个值是1.7976931348623157e+308
。因此,超过此限制的数字将表示为float('inf')
正数或float('-inf')
负数。
现在,为了解决您的问题,您可以使用decimal
python 中的内置库。
试试这个:
from decimal import Decimal
b = Decimal(b)
n = Decimal(n)
c = Decimal(c)
B = (b + (n - b*b) * c)
print(B)
输出:
-7.082691727141074913216311547E+326
推荐阅读
- azure-devops - 当“更改已经存在”时如何修复 YAML 文件转换任务?
- apache-spark-sql - 在 PowerQuery 中更新源:通过 ODBC 提取 Azure 数据
- r - 从 KableExtra 表对象以 R 笔记本格式正确呈现数学符号
- flutter - 如何确定一个偏移量是否包含在另一个偏移量区域中?
- c# - 在 SQL Server 中获取一组值
- google-chrome - 如何将“允许下载”添加到沙盒属性列表
- c++ - 无论如何将 WebView 或任何其他相同的对象包含到 c++ 项目中?
- android - 为 android x86 和 x86_64 架构编译 ijkplayer x264,错误:未知类型名称“v4si”
- c++ - 不可访问的虚函数的模糊访问
- javascript - 使用模块导出将模板文字与逻辑分开