You need to enable JavaScript to run this app. Python3浮点数精度问题及numpy行列式计算精确值获取方法
优惠活动
大模型
产品
解决方案
定价
更多

Python3浮点数精度问题及numpy行列式计算精确值获取方法

问题本质

你遇到的是IEEE 754标准二进制浮点数的固有精度误差,这类问题在所有采用该标准的编程语言(包括R)中都存在,只是R的默认打印配置会默认隐藏微小尾差,所以你之前感知不强。

常用解决方案

根据你的使用场景,可以选择以下几种处理方式:

1. 数值近似比较

如果只是需要判断两个浮点数是否相等,不需要完全精确的存储值,用内置的近似比较函数即可:

  • 普通Python数值用math.isclose:
import math
print(math.isclose(1.1+2.2, 3.3)) # 返回True
  • Numpy数值用np.isclose:
import numpy as np
A = np.array([[1,2],[3,4]])
Det_A = np.linalg.det(A)
print(np.isclose(Det_A, -2)) # 返回True

2. 结果精度修整

如果你明确知道计算结果的精度要求(比如示例中行列式结果一定是整数),可以直接对结果做修整:

import numpy as np
A = np.array([[1,2],[3,4]])
Det_A = np.linalg.det(A)
# 四舍五入到整数
rounded_det = round(Det_A)
print(rounded_det) # 输出-2

如果只是需要打印效果整洁,不需要修改存储值,可以调整numpy的打印配置:

np.set_printoptions(precision=4)
print(Det_A) # 输出-2.

3. 完全精确的代数计算

如果需要无误差的精确计算结果,改用符号计算库sympy实现,完全规避浮点数误差:

from sympy import Matrix
A = Matrix([[1,2],[3,4]])
Det_A = A.det()
print(Det_A) # 直接输出整数-2,无任何精度误差

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 21:42:04