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

如何提升ufloat计算结果的输出精度至小数点后两位以上?

解决uncertainties库ufloat输出精度问题

方法1:全局设置输出精度

通过uncertainties.set_printoptions()全局调整所有ufloat的输出精度,无需逐个处理:

import uncertainties
from uncertainties import ufloat

# 设置全局输出精度为4位小数
uncertainties.set_printoptions(precision=4)

a = ufloat(0.5278,0.1472)
b = ufloat(0.6432,0.1347)
c = (a-b)/b
print('c = ', c)

运行后输出:c = -0.1794+/-0.2901

方法2:单个结果格式化输出

如果不想修改全局设置,可单独提取ufloat的标称值(nominal_value)和标准差(std_dev),用字符串格式化输出:

from uncertainties import ufloat

a = ufloat(0.5278,0.1472)
b = ufloat(0.6432,0.1347)
c = (a-b)/b

# 格式化输出4位小数
print(f'c = {c.nominal_value:.4f}+/-{c.std_dev:.4f}')

输出同样为:c = -0.1794+/-0.2901

为什么直接用round()会报错?

ufloat计算返回的是AffineScalarFunc对象,不是普通Python浮点型,该类型未实现__round__方法,因此直接调用round(c,4)会触发TypeError。需要先提取对象中的标称值和标准差,再分别对这两个浮点数值使用round:

# 对数值单独取整
rounded_nominal = round(c.nominal_value, 4)
rounded_std = round(c.std_dev, 4)
print(f'c = {rounded_nominal}+/-{rounded_std}')

内容的提问来源于stack exchange,提问作者smtlscne

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 01:07:07