Сравнение чисел с плавающей запятой с допуском не подтверждает утверждение - PullRequest
1 голос
/ 29 мая 2019

Я использую ScalaTest (3.0.4), и не могу заставить работать какие-либо примеры сравнения чисел с плавающей запятой с допустимым отклонением. Вот что у меня есть:

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
        }
    }

Выше компилируется, но когда я запускаю тест, я получаю следующую ошибку:

3.0579379 was not equal to 3.058 +- 0.1
Expected :3.058 +- 0.1
Actual   :3.0579379

Вместо этого я также связал следующее утверждение:

assert(dist === 3.058)

Однако это тоже не работает и выдает следующую ошибку:

3.0579379 did not equal 3.058
Expected :3.058
Actual   :3.0579379

Я прочитал множество примеров сравнения чисел с плавающей запятой с обоими вышеупомянутыми синтаксисами, и похоже, что они должны работать. Мой первый пример прямо из документации .

Что я делаю не так?

1 Ответ

1 голос
/ 30 мая 2019

Так как dist является Float, в то время как другие аргументы Double s, попробуйте преобразовать dist в Double, как это

dist.toDouble mustBe 3.058D +- 0.1

или приводить другие аргументы с плавающей точкой, например:

dist mustBe 3.058f +- 0.1f

Возможно, относится к Сбой сопоставления сопоставлений для смешанных числовых типов

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...