Точность в assertEquals? - PullRequest
       31

Точность в assertEquals?

1 голос
/ 08 февраля 2012

У меня быстрый вопрос:

/**
* Method a1
*
* @param p1 A parameter
* @param p2 A parameter
* @return The return value
*/

    public double a1(double p1, double p2) {
    return (p1 + p2) / 2;
    }

    @Test
    public void testa1() {
    assertEquals(0, a1(32.56, 45.90), 0.0 );
    }

очень долго дает мне значение 39.23000000000000004.Как я могу уменьшить точность этого в бите подтверждения утверждения?

Ответы [ 2 ]

0 голосов
/ 08 февраля 2012

Я в основном определяю AssertAlmostEqual вместе с параметром, который определяет точность (или аргумент по умолчанию).

например. def AssertAlmostEquals (значение1, значение2, точность = 0,000001): assertEquals (abs (значение1 - значение2) <точность) </p>

0 голосов
/ 08 февраля 2012

Первый аргумент - это ожидаемое значение, второй - фактическое значение, а третий параметр assertEquals - допустимая дельта.Вы можете сделать это .01 или как вам нужно.

Таким образом, ваше утверждение должно выглядеть примерно такномер вы думаете, что они есть.Это связано с тем, что с 32/64 битами может быть представлено только столько точных чисел.Всегда существует бесконечное число чисел, которое не может быть представлено точно .Вот почему вам нужна дельта.

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