Задача
Каким вы думаете будет значение переменной result после выполнения следующего сегмента Java кода?
int i = 1234567890;
float f = i;
int result = i – (int)f;
1. 0
2. nonzero
3. an error
Ответ: 2.
Оба int и float 32-битные типы.
Все 32-битные int используются для представления целой части числового значения.
Тем не менее, для float, некоторые биты используются для представления целой части и некоторые для десятичной части.
При присвоении большого целого значения переменной с плавающей точкой, уменьшенное количество битов для его целой части, возможно, не в состоянии точно представить большое значение.
Таким образом, вычисление разности между int и float переменных одного и того же большого численного значения, не всегда может дать результат 0.
Вы можете проверить код, указанный выше, в программе Java.