Вы получите истинный результат, потому что значение 1000000
(то есть 1e6
) намного меньше, чем относительная точность с плавающей запятой переменной для значений при или около максимальных пределов. Например:
>> realmax-1e6==realmax % Subtract 1 million
ans =
logical
1 % Still equal; not big enough to register a change
>> realmax-eps(realmax)==realmax % Subtract the distance to the next largest value
ans =
logical
0 % Unequal; yeah, that's big enough to matter
Короче говоря, расстояние между представимыми числами в максимальном пределе (т.е. eps(realmax)
) составляет порядка 10^292
. Вычитание намного меньшего значения 1e6
дает результат, который просто округляется до того, что было раньше.
Более подробные объяснения работы с числами с плавающей запятой здесь и здесь .
.