python - mpmath 和精度问题
问题描述
mpmath.sqrt(2) 的精度不是我所期望的。我究竟做错了什么?
import mpmath as mp
mp.prec = 20
mp.nprint(mp.sqrt(2), 20)
结果: 1.4142135623730951455
预期:(1.4142135623730950488
根据此参考)
解决方案
有趣的案例。使用 pythonsDecimal
它给出的结果与您列出的参考相同,但使用float
ormath.sqrt()
似乎给出不同的结果。
>>> from decimal import Decimal
>>> '{:.25f}'.format(2**0.5) # Result 1
'1.4142135623730951454746219'
>>> '{:.25f}'.format(math.sqrt(2)) # Result 1
'1.4142135623730951454746219'
>>> '{:.25f}'.format(math.sqrt(Decimal('2'))) # Result 1
'1.4142135623730951454746219'
>>> '{:.25f}'.format(Decimal('2') ** Decimal('0.5')) # Result 2
'1.4142135623730950488016887'
# The reference you listed # Result 2
'1.4142135623730950488016887'
您的库可能正在float
内部使用。
但我认为这是正常的,而不是错误,因为float
s 并不意味着 100% 精确;它们应该在机器上运行得很快。
推荐阅读
- garmin - 作为爱好者,我可以访问 Garmin Health API 吗?
- javascript - 我想关闭一条警报消息
- python - numpy中具有多个参数的分段函数
- php - 在 Woocommerce 中为产品变体设置不同的输入数量值
- firebase - flutter firebase google登录以及如何从多个类访问
- c# - 与 TcpClient 的多个连接,第二个连接总是挂起/什么都不做
- c++ - c + set和unordered_set之间的不同结果
- python - 如何将列表转换为csv中的列?
- excel - 根据列的值将一个表拆分为多个较小的表-Power Query
- c++ - std::add_const_t
& vs 常量 T&