You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将SymPy浮点数转换为Python Decimal类型?

解决SymPy中EulerGamma值转Decimal类型的精度保留问题

错误原因

直接将SymPy返回的Float对象传入Decimal构造函数会报错,因为两者类型不支持直接转换。

正确转换方法

先将SymPy的浮点值转换为字符串,再用Decimal解析该字符串,即可完整保留所有精度:

from sympy import EulerGamma
from decimal import Decimal as D
import decimal

# 设置足够高的精度,确保能容纳所有位数
decimal.getcontext().prec = 100

# 先转字符串再构造Decimal
gamma_decimal = D(str(EulerGamma.n(60)))
print(gamma_decimal)

说明

  • SymPy的EulerGamma.n(60)返回的Float对象,其字符串表示会完整输出所有指定精度的位数,不会丢失信息。
  • 通过str()转换后,Decimal可以准确解析这个字符串,得到和原SymPy浮点值完全一致的高精度Decimal对象。

内容的提问来源于stack exchange,提问作者Simd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 03:05:40