Мне хорошо известно, что использование оператора ==
в двух числах с плавающей запятой не работает / является плохой практикой, однако, как я вижу, использование операторов >
и <
в двух числах должно быть допустимым.Однако в моей программе, когда я сравниваю очень маленькое значение с плавающей точкой с нулем, кажется, что оно просто округляет маленькое значение до нуля, несмотря на то, что оно правильно печатает небольшое число в окне консоли.Вот упрощенный базовый пример кода, чтобы показать, что я имею в виду:
float f1 = 0;
float f2 = 5.063425E-12; //or something similarly small
//f2 isn't actually assigned like this, this is a typical value
//as it would be displayed in the console window. it is actually
//formed by a series of multiplications which I haven't shown
//here for simplicity.
if(f2 > f1) {
System.out.println("Success!");
} else {
System.out.println("Failed");
}
в настоящее время он будет выводить «Failed», даже если f2
умеренно больше нуля.показатель степени f1 может быть меньше, поскольку он не инициализируется дробной частью, может ли это повлиять на сравнение?Какое решение / лучшая практика для этого?Заранее спасибо.