You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 21:35:13