python - 为什么模块超过1.0e+18会报错
问题描述
为什么模块超过1.0e+18会报错?
from decimal import Decimal
M = 1.0e+18
print(M)
M = float(Decimal(M).quantize(Decimal("1E-10"),rounding="ROUND_HALF_UP"))
print(M)
错误:
InvalidOperation: [<class 'decimal.InvalidOperation'>]
解决方案
与其他操作不同,如果量化操作后的系数长度大于精度,则会发出 InvalidOperation 信号。这保证了,除非存在错误条件,否则量化的指数总是等于右手操作数的指数。
此外,与其他操作不同,量化永远不会发出 Underflow 信号,即使结果不正常且不精确。
如果第二个操作数的指数大于第一个操作数的指数,则可能需要舍入。在这种情况下,舍入模式由给定的舍入参数确定,否则由给定的上下文参数确定;如果两个参数都没有给出,则使用当前线程上下文的舍入模式。
推荐阅读
- javascript - CKEDITOR - 插入 html 文本或 img 单击 CKEDITOR 外部的某些 DIV
- javascript - Firebase With Web:在参考中使用用户 ID 会导致错误:未捕获的 TypeError:无法读取未定义的属性“on”
- android - 对于特定布局/资源的 LTR,即使在 RTL 中运行
- javascript - 如何在另一个组件中访问一个组件的常量变量 - React
- python - Python2:以列表格式打印函数的布尔结果
- reactjs - 使用 create-react-app 设置 Mobx 时的问题
- java - 使用 Angular 7 前端启动 Spring-Boot 应用程序时无法加载资源错误(缺少资源)
- firebase - 我可以将 OneSignal 令牌导入 FCM 吗?
- android - 从另一个活动更新首选项 UI 实例?
- nginx - keycloak / nginx. Can't access to admin page (Invalid parameter: redirect_uri )