Python *的操作数类型不受支持:';浮动';和';十进制';

Python *的操作数类型不受支持:';浮动';和';十进制';,python,floating-point,decimal,Python,Floating Point,Decimal,尝试运行代码时,出现以下错误: for a in range(0,size): et = 0.0023*ralist[rows[a][2]] * ( 0.5*(rows[a][3] + rows[a][4]) + 17.8 ) * ( rows[a][3] - rows[a][4])**(0.5) eto_values.insert(a,et) 我也尝试过使用decimal.decimal()函数。有人能告诉我如何清除这个错误吗?你不能乘法或除法浮点数和decimal.dec

尝试运行代码时,出现以下错误:

for a in range(0,size):
    et = 0.0023*ralist[rows[a][2]] * ( 0.5*(rows[a][3] + rows[a][4])  + 17.8 ) * ( rows[a][3] - rows[a][4])**(0.5)
    eto_values.insert(a,et)

我也尝试过使用
decimal.decimal()
函数。有人能告诉我如何清除这个错误吗?

你不能乘法或除法
浮点数
decimal.decimal()
类型,我建议用
decimal('0.0023')
decimal('0.5')相乘:

用于范围内的(0,大小)
et=十进制('0.0023')*ralist[行[a][2]]*(十进制('0.5')*(行[a][3]+行[a][4])+17.8)*(行[a][3]-行[a][4])**(0.5)
eto_值。插入(a,et)
>>从十进制输入*
>>>十进制(1.2)*十进制(3.4)
十进制('4.0799999997428258287')
>>>十进制(1.2)*3.4
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
TypeError:不支持*:“decimal.decimal”和“float”的操作数类型

什么是ralist?我肯定你弄糟了。这只是一个数组。它包含所有“十进制”类型的值“
decimal(0.0023)
decimal(0.5)
”-否!如果要将十进制硬编码到源代码中,请始终从字符串构造它,如
Decimal('0.0023')
,以避免将值舍入到可以用浮点表示的值。
designe
→ <代码>除法
unsupported operand types for * : 'float' and  'decimal'
>>> from decimal import *
>>> Decimal(1.2) * Decimal(3.4)
Decimal('4.079999999999999742428258287')
>>> Decimal(1.2) * 3.4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for *: 'decimal.Decimal' and 'float'