Есть простейший код:
private static float val = 0f;
public static void main(String[] args) {
for (int i = 0; i < 100000; i++ ) {
val = val + 0.1f;
System.out.println(val);
}
}
Ожидаю в конце получить 100000*0,1 = 10000. Но последнее значение: 9998.557.
Если запустите код — увидите, что значения отображаются неточно, должны быть четко с шагом 0,1 но вместо 0,8 — 0.8000001, вместо 2000 — 2000.0587 и дальше ближе к максимальному значению — все больше погрешность. В чем дело?