Это выражение:Является ли это действительным выражением java?
if(Math.abs(GH1[i]) < Double.valueOf("1E-100")){
.
.
.
}
Все переменные имеют double
типа. Из кода должно быть ясно, что я пытаюсь сравнить. Я всегда предполагал, что это будет правильно в java, поскольку компилятор никогда не показывает никаких ошибок. But I recently read here, что я не должен использовать ==
для сравнения чисел с плавающей запятой. Это верно для других реляционных операторов? Если меня не волнует NaN
, могу ли я использовать встроенные операторы связи вместо функций Double
или Float
?
Могу ли я использовать выражение, показанное ниже?
if(GH1[i] < 0.0f) // if(Double.compare(GH1[i], 0.0f) < 0 )
tempSign = -1.0f;
else if(GH1[i] == 0.0f) // else if(Double.compare(GH1[i], 0.0f) == 0)
tempSign = 0.0f;
else if(GH1[i] > 0.0f) // else if(Double.compare(GH1[i], 0.0f) > 0)
tempSign = 1.0f;
Или он должен использовать функции Double и Float?
Возможно, вы только что отправили свое наблюдение. –
вы пытаетесь использовать их? Были ли у вас какие-либо проблемы при их использовании? – SudoRahul
хорошо, кажется, все в порядке. Это просто часть более длинного кода, и NaN по какой-то причине распространяется внутри кода , поэтому просто пытаюсь убедиться, что это не проблема. – user13267