首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >比较浮点数与容差失败断言

比较浮点数与容差失败断言
EN

Stack Overflow用户
提问于 2019-05-29 22:54:45
回答 1查看 333关注 0票数 1

我使用的是ScalaTest (3.0.4),我找不到任何可以比较浮点数和容差的例子。这就是我所拥有的:

代码语言:javascript
代码运行次数:0
运行
复制
import org.scalatest.{MustMatchers, WordSpec}

class DetectionClusteringSpec extends WordSpec with MustMatchers {

    "EmbeddingsGroup.vecdist" should {
        "correctly compute vector distance" in {
            val dist = EmbeddingsGroup.vecdist(TestDetections.emb1,TestDetections.emb4)
            // Note: The above method returns a Float. 

            dist mustBe 3.058 +- 0.1
        }
    }

上面的代码可以编译,但是当我运行测试时,我得到了以下失败:

代码语言:javascript
代码运行次数:0
运行
复制
3.0579379 was not equal to 3.058 +- 0.1
Expected :3.058 +- 0.1
Actual   :3.0579379

我还使用了下面的断言:

代码语言:javascript
代码运行次数:0
运行
复制
assert(dist === 3.058)

但是,这也不起作用,并给出以下失败:

代码语言:javascript
代码运行次数:0
运行
复制
3.0579379 did not equal 3.058
Expected :3.058
Actual   :3.0579379

我读过很多用上述两种语法比较浮点数的例子,看起来它们应该可以工作。我的第一个示例直接来自the documentation

我做错了什么?

EN

回答 1

Stack Overflow用户

发布于 2019-05-30 17:35:59

由于distFloat,而其他参数是Double,因此尝试将dist转换为Double,如下所示

代码语言:javascript
代码运行次数:0
运行
复制
dist.toDouble mustBe 3.058D +- 0.1

或者让其他参数像这样浮动

代码语言:javascript
代码运行次数:0
运行
复制
dist mustBe 3.058f +- 0.1f

可能与Comparison matchers fail on mixed numeric types有关

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56363432

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档