0,1 поплавка больше 0,1 двойного. Я ожидал, что это будет ложным [дубликат]
На этот вопрос уже есть ответ здесь:
Если оператор <работает правильно для типов с плавающей точкой, почему мы не можем использовать его для проверки на равенство? 5 ответовПозволять:
double d = 0.1;
float f = 0.1;
должно выражение
(f > d)
вернутьtrue
или жеfalse
?
Эмпирически, ответtrue
, Тем не менее, я ожидал, что это будетfalse
.
Как0.1
не может быть идеально представлен в двоичном15
в16
десятичные цифры точности, а число с плавающей точкой имеет только7
, Итак, они оба меньше0.1
в то время как двойник ближе к0.1
.
Мне нужно точное объяснениеtrue
.