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

numpy.float64转数组时小数点后精度从16位降为5位如何解决

Numpy数组转换后浮点数精度保留方案

核心原因说明

你观察到的小数点后位数减少并非真实的精度丢失,属于Numpy默认打印配置的展示限制:默认仅显示浮点数小数点后5位,数组底层存储的numpy.float64值仍完整保留16位精度,和原始计算值完全一致。

验证精度无丢失的方法

直接对比原始变量和数组内元素值即可确认:

# 输出为True则证明存储值完全一致,无精度损失
print(ham_log == log_class_priors[0])
# 格式化打印数组内元素,可查看完整精度值
print("{0:.16f}".format(log_class_priors[0]))

调整打印显示完整精度

如果需要在打印数组时直接展示全部小数位,修改Numpy全局打印配置即可:

# 设置打印精度为16位,匹配float64的有效位数
np.set_printoptions(precision=16)
# 此时打印数组会显示完整的16位小数
print(log_class_priors)

代码优化建议

你的原有写法中astype(float)属于冗余操作:原始计算值已经是numpy.float64类型,np.array默认会继承输入元素的类型,可简化为显式指定dtype的写法,逻辑更清晰:

log_class_priors = np.array([ham_log, spam_log], dtype=np.float64)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:36:02