Существуют ли какие-либо встроенные функции Java или лучшие решения для поиска ошибки с плавающей запятой?
Или, другими словами, есть ли способ найти наименьшее значение, которое я могу добавить к переменной double
, которой нельзя пренебречь из-за округления с плавающей запятой?
Прямо сейчас я решил, что хороший способ получить это - перевернуть последний бит в нем, вычесть его из переменной и вернуть результат как double
.
double getFloatPointError(double in){
long bits = Double.doubleToLongBits(in);
bits^=1;
return Math.abs(in-Double.longBitsToDouble(bits));
}
Я не думаю, что это хорошее решение, так как сам результат вывода double
, и, следовательно, также склонен к ошибкам с плавающей запятой и может дать неправильный результат. Кроме того, я, вероятно, изобретаю колесо с таким подходом, чего я бы хотел избежать.
Пояснение: Я знаю, что такое значения с плавающей запятой, я знаю, что их не следует использовать, когда важна точность, и я знаю, что для таких целей я должен использовать BigDecimal
вместо этого. Пожалуйста, воздержитесь от публикации общей информации и рекомендаций, связанных с плавающей точкой, так как они вряд ли содержат ответ на мой вопрос.