Python Typeerror:/:';十进制';和';浮动';

Python Typeerror:/:';十进制';和';浮动';,python,floating-point,Python,Floating Point,这是我的代码:我一整天都在试图解决这个错误,但仍然有错误: TypeError:/:“Decimal”和“float”的操作数类型不受支持 来自数学导入sqrt、acos、pi 从decimal导入decimal,getcontext getcontext().prec=30 类向量(对象): 无法规格化\u ZERO\u向量\u MSG='无法使用零向量计算角度' 定义初始值(自身,坐标): 尝试: 如果没有坐标: 升值误差 self.coordinates=元组(坐标中x的十进制(x)) s

这是我的代码:我一整天都在试图解决这个错误,但仍然有错误:

TypeError:/:“Decimal”和“float”的操作数类型不受支持

来自数学导入sqrt、acos、pi
从decimal导入decimal,getcontext
getcontext().prec=30
类向量(对象):
无法规格化\u ZERO\u向量\u MSG='无法使用零向量计算角度'
定义初始值(自身,坐标):
尝试:
如果没有坐标:
升值误差
self.coordinates=元组(坐标中x的十进制(x))
self.dimension=len(自坐标)
除值错误外:
raise VALUERROR('坐标必须为非空')
除类型错误外:
raise TypeError('坐标必须是iterable')
#正交或平行
def为零(自身,公差=1e-10):
返回self.magnity()<公差
def与(自身、v、公差=1e-10)正交:
返回abs(自身点(v))<公差
def与(自身,v)平行:
返回(self.is_zero()或
v、 是_zero()还是
(v)==0或
自转角(v)=pi)
#点积与角度
def dot(自身,v):
返回和([x*y表示x,y表示zip(自坐标,v坐标)])
def角度(自身,v,单位:度=假):
尝试:
u1=自规范化()
u2=v.标准化()
角度(单位:弧度=acos(u1.点(u2))
如果以度为单位:
度/弧度=180。/pi
返回角(单位:弧度)×度(单位:弧度)
其他:
返回角(单位:弧度)
例外情况除外,如e:
如果str(e)=self.CANNOT_NORMALIZE_ZERO_VECTOR_MSG:
raise异常('无法计算矢量为零的角度')
其他:
提高e
#震级和方向
def幅值(自):
坐标_平方=[x**2表示自坐标中的x]
返回sqrt(和(坐标_平方))
def标准化(自):
尝试:
震级=自身震级()
返回自我乘以标量(十进制('1.0')/量级)
除零误差外:
引发异常(self.CANNOT\u NORMALIZE\u ZERO\u VECTOR\u MSG)
#加、减、标量乘
def plus(自身,v):
新的_坐标=[x+y代表x,y在zip中(自坐标,v坐标)]
返回向量(新的_坐标)
def减(自身,v):
新的_坐标=[x-y代表x,y在zip中(自坐标,v坐标)]
返回向量(新的_坐标)
def乘以_标量(自身,c):
新的_坐标=[十进制(c)*x表示自坐标中的x]
返回向量(新的_坐标)
定义(自我):
返回'Vector:{}'。格式(self.coordinates)
定义(自我,v):
返回self.coordinates==v.coordinates
v=向量(['8','-9'])
w=向量(['-1','-1'])
打印v.dot(w)
用(w)打印v.角
用(w,单位为度=真)打印v.angle_

一般来说,混合使用
十进制
浮点
数学是没有意义的。不确定您为什么需要这里的
Decimal
,但只要做两个小改动,就可以运行此代码。我建议您考虑取消十进制,除非您确定需要:

将震级更改为:

# magnitude& Direction
def magnitude(self):
    coordinates_squared = [x ** 2 for x in self.coordinates]
    return sum(coordinates_squared) ** Decimal('0.5')
以及
acos
呼叫:

angle_in_radians = Decimal(str(acos(u1.dot(u2))))
angle_in_radians = Decimal(str(acos(u1.dot(u2))))