我需要计算非常低温度下的本征载流子浓度,该浓度需要非常小的值(低至 10-678),并由 Python 四舍五入到 0。您建议我做什么来提高精度?
两种选择:
使用对数表示法。因此,您不是直接存储
x
,而是存储 log10(x)
。所以在这种情况下,您将存储 -678
。这使得乘法成为一种选择,但加法变得不可能。
decimal.Decimal
,并将精度设置为所需的水平。
>>> from decimal import Decimal, getcontext
>>> getcontext().prec = 10000
>>> Decimal(10)**-678
Decimal('1E-678')