Можно ли отображать double с большей точностью, чем float, через String Formatter? - PullRequest
0 голосов
/ 12 января 2020

Как сохранить точность при работе с двойными в Java? У меня есть следующий тестовый пример:

double x = -1.0 / 3.0;
double y = 1.0000000001;
Point2 p = new Point2(x, y);

String expected = "(" + x + ", " + y + ")";
assertEquals(expected, p.toString());

Конструктор Point2:

public Point2(double x, double y) {
  this.x = x;
  this.y = y;
  }

Переопределение toString:

@Override
public String toString() {
  return String.format("(%f, %f)", this.x, this.y);
}

Что не удается: org.junit.ComparisonFailure: expected:<(-0.333333[3333333333, 1.0000000001])> but was:<(-0.333333[, 1.000000])>

1 Ответ

0 голосов
/ 12 января 2020

Проблема была в моем методе toString (). Имеет смысл, что они были отформатированы как поплавки сейчас. Закончился обновил его до:

@Override
public String toString() {
    return "(" + this.x + ", " + this.y + ")";
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...