我想在Python中计算Decimal
的幂,如:
from decimal import Decimal
Decimal.power(2,2)
上面应该返回Decimal('2)
如何计算Decimals
的电量?
编辑: 这就是我所做的
y = Decimal('10')**(x-deci_x+Decimal(str(n))-Decimal('1'))
x,deci_x是十进制类型
但是上面的表达式抛出错误:
decimal.InvalidOperation: x ** (non-integer)
堆栈跟踪:
Traceback (most recent call last):
File "ha.py", line 28, in ?
first_k_1=first_k(2,n-1,k)
File "ha.py", line 18, in first_k
y = Decimal('10')**(x-deci_x+Decimal(str(n))-Decimal('1'))
File "/usr/lib64/python2.4/decimal.py", line 1709, in __pow__
return context._raise_error(InvalidOperation, 'x ** (non-integer)')
File "/usr/lib64/python2.4/decimal.py", line 2267, in _raise_error
raise error, explanation
答案 0 :(得分:8)
您可以使用**
来计算能力:
2**3 # yields 8
a = Decimal(2)
a**2 # yields Decimal(4)
更新后,对我来说似乎没问题:
>>> x = Decimal(2)
>>> deci_x = Decimal(1)
>>> n=4
>>> y = Decimal('10')**(x-deci_x+Decimal(str(n))-Decimal('1'))
>>> y
Decimal('10000')
答案 1 :(得分:3)
您可以使用带有十进制的幂幂运算符**
print(Decimal(2)**Decimal(2)) # 4
编辑,跟进您的问题
您不需要将stings解析为Decimal()...
from decimal import Decimal
x, deci_x, n = Decimal(2), Decimal(3), 4
y = Decimal(10)**(x-deci_x+Decimal(n)-Decimal(1))
print(y) # 100
答案 2 :(得分:0)
在Python> = 3.4中Decimal
有一个power
function。
>>> decimal.power(Decimal('2'), Decimal('2.5'))
或者只是使用math
模块;
from math import pow
pow(2, 2)
使用小数
>>> pow(Decimal('2'), Decimal('2'))
和非整数小数也可以使用
>>> pow(Decimal('2'), Decimal('2.5'))
答案 3 :(得分:0)
Python 2.4.6不支持Decimal的非整数幂。来自__pow__
中的decimal.py
方法:
def __pow__(self, n, modulo = None, context=None):
#[snip]
if not n._isinteger():
return context._raise_error(InvalidOperation, 'x ** (non-integer)')
如果x-deci_x+Decimal(str(n))-Decimal('1')
始终是整数,请在将其用作指数之前将其转换为整数类型。如果您需要指数为非整数,请考虑升级到更新版本的Python。