Может ли result
быть ложным, потому что 4/2.0
может вернуть что-то вроде 1.99999999
? В более общем плане, чем название:Может ли ошибка с плавающей запятой вызывать 'a/(double) b> = a/b' для отказа?
int a = // any valid int
int b = // any valid int
boolean result = (a/(double)b) >= a/b;
Если это возможно, может кто-нибудь привести пример a
и b
? Если это невозможно, существует ли какая-либо спецификация java или с плавающей запятой, которая доказывает это?
Я написал эту логику несколько минут назад и внезапно волновался об этом. Я не смог его сломать, но мне интересно, гарантировано ли это во всех JVM.
Спасибо за отличный ответ! –