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

测试场景下浮点数比较的公式选型与公差设定原则咨询

测试场景下浮点数比较公式选择与公差设定的原则方法

浮点数比较函数的公式差异

Python标准库的math.isclose函数,等价逻辑为:

abs(a - b) <= max(rtol * max(abs(a), abs(b)), atol)

Numpy库提供的numpy.isclose和numpy.allclose函数,等价逻辑为:

abs(a - b) <= (atol + rtol * abs(b))

两类函数的官方文档均未说明公式选择的依据,也未给出设定合理**绝对公差(atol)和相对公差(rtol)**的原则性标准。

测试中的痛点

我在代码测试中经常用到这些函数,但始终没搞懂选择两种公式的原则,也不知道怎么根据场景设定合适的公差。平时我都是用默认值,只有明确存在数值精度损失时,才凭直觉手动调整公差直到结果“看起来合理”——这个过程既繁琐又不严谨,和软件测试(尤其是基于属性的测试)的目标完全相悖。

举个例子:我需要断言同一算法的两种不同实现产生“相同”结果,但直接用精确相等比较显然行不通。

问题

请问在测试场景下,选择浮点数比较公式与设定公差有哪些原则性方法?


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 18:10:31