Java Если число -0 - PullRequest
       18

Java Если число -0

0 голосов
/ 16 октября 2018

Если есть этот код:

double sin = Math.sin(angle*rad);
double cos = Math.cos(angle*rad);
double tan = Math.tan(angle*rad);

Возвращает функцию треугольника для указанного угла.Однако для градусов угла, например 90, возвращается -0,00000.Поэтому, когда эти значения выводятся на печать, -0 выглядит странно.Как проверить -0 в операторе if?

Я пробовал с этим кодом:

if (tan==0) { s.o.p(tan); }

, и он не запускается.

Ответы [ 2 ]

0 голосов
/ 17 октября 2018

Вы можете проверить наличие отрицательного нуля, поделив 1 на ваше значение.Это даст Double.POSITIVE_INFINITY для положительного нуля и Double.NEGATIVE_INFINITY для отрицательного нуля:

if (1.0 / value == Double.NEGATIVE_INFINITY) {
    // Value was a negative zero
}
0 голосов
/ 16 октября 2018

Просто возьмите абсолютное значение переменной, когда вы сравните его с нулем.Скорее всего, вам потребуется охватить диапазон, поскольку он не всегда может быть точно 0,0.

if (Math.abs(tan) <= threshold) { ... }

Если вы установите threshold на достаточно малое значение, чтобы охватить то, что вы считаете достаточно близким к 0.

Редактировать : Добавлен порог / значение эпсилона в сравнении - спасибо Бен

...