Метод Double.compare не распознается в SonarQube и выдает ошибку деления на ноль

#java #sonarqube

Вопрос:

 double Sales = 0.0;
double var = 0.0;
double varPercent = 0.0;

if(Double.compare(Sales, 0) != 0) varPercent = var / Sales;
 

Мой фрагмент кода выглядит примерно так. Этот метод используется для проверки того, равен ли объем продаж нулю или нет, прежде чем будет выполнено разделение. Но я все еще получаю критическую ошибку для этого в Sonaqube (ошибка деления на ноль). Это ошибка кода с моей стороны или что-то еще?

Комментарии:

1. Почему бы просто не if(Sales != 0.0) сделать это ?

2. Это не рекомендуемый способ сравнения двойных значений в Java. Если вы проверяете различные документы на предмет сравнения двойных значений, рекомендуется не сравнивать их напрямую.

3. «Если вы проверите различные документы на предмет сравнения двойных значений», можете ли вы предоставить ссылки? Вы хотите избежать использования == с double , когда есть возможность NaN ; если у вас есть НаН Sales , у вас есть большие проблемы.

4. Кстати, приведенный выше код нормально работает в eclipse.

5. Если вы инициализируете продажи с помощью -0 ( double Sales = -0.0; ), то с помощью вашего кода вы получите NaN в результате, потому Double.compare() что разница между 0.0 и -0.0. Если бы вы написали if(Sales != 0.0) , то результат был бы 0.0