Тебя волнует математика с плавающей точкой.0.0, вероятно, не абсолютный 0.0, но 0.00000000000000009 или что-то действительно очень маленькое.Почему это?Хорошо математика с плавающей точкой дискретна в компьютерах.Но в действительности математика с плавающей точкой непрерывна, и, следовательно, мы имеем несоответствие между дискретным (цифровым) и непрерывным (аналоговым).Ошибки начинают ползти, заставляя вещи немного дрейфовать.Если вы хотите узнать больше, прочитайте это:
http://docs.oracle.com/cd/E19957-01/806-3568/ncg_goldberg.html
В junit есть методы, специально разработанные для сравнения значений типа float / double, которые допускают допуск (например, assertEquals (ожидаемое двойное, двойное действительное)двойной эпсилон)).Используйте их, и вы должны стабилизировать свой тест перед лицом крошечных ошибок, которые вы видите.Помните, что не устанавливайте их слишком высоко, потому что ваша общая ошибка должна быть очень маленькой.
См. Также этот вопрос об этом:
JUnit assertEquals (ожидаемое двойное, действительное в два раза, двойноеэпсилон)