Python中print如何显示10位小数?方程求根打印报错解决
问题:Python打印方程根的10位小数时触发类型错误
我正在求解方程的根,需要将根以10位小数的格式打印出来。使用以下代码时出现错误,请问如何让Python正确打印10位小数?
def find_root(a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2): coeff=[a1-a2,b1-b2,c1-c2,d1-d2,e1-e2,f1-f2] print('%.10f' %np.roots(coeff))
报错信息:
Traceback (most recent call last): File "C:\Users\Maedeh\AppData\Local\Temp\ipykernel_14412\3234902339.py", line 1, in <cell line: 1> find_root(0.0024373075,-0.0587498671,0.4937598857,-1.7415327555,3.6624839316,20.8771496554,0.0021396943,-0.0504345999,0.4152634229,-1.4715228738,3.3049020821,20.8406692002) File "C:\Users\Maedeh\AppData\Local\Temp\ipykernel_14412\3260022606.py", line 3, in find_root print('%.10f' %np.roots(coeff)) TypeError: only size-1 arrays can be converted to Python scalars
解决方法
错误原因
np.roots()返回的是数组类型(你的多项式是5次,会生成5个根),而旧式的'%.10f' % ...格式化语法只能处理单个数值(标量),无法直接作用于数组,因此触发类型错误。
方案1:遍历根逐个格式化打印
如果需要对每个根单独控制输出格式(比如区分实根和复根),可以遍历数组中的每个元素,逐个格式化:
import numpy as np def find_root(a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2): coeff = [a1-a2, b1-b2, c1-c2, d1-d2, e1-e2, f1-f2] roots = np.roots(coeff) # 遍历每个根,按10位小数格式输出 for root in roots: if np.iscomplex(root): # 复根分别格式化实部和虚部 print(f"{root.real:.10f} + {root.imag:.10f}j") else: # 实根直接格式化 print(f"{root.real:.10f}")
方案2:设置numpy全局打印精度
如果只需简单输出所有根的10位小数,可以用np.set_printoptions()统一设置打印精度:
import numpy as np def find_root(a1,b1,c1,d1,e1,f1,a2,b2,c2,d2,e2,f2): coeff = [a1-a2, b1-b2, c1-c2, d1-d2, e1-e2, f1-f2] roots = np.roots(coeff) # 设置打印精度为10位,抑制科学计数法 np.set_printoptions(precision=10, suppress=True) print(roots)
内容的提问来源于stack exchange,提问作者david
相关产品推荐
相关产品推荐

