Я уже рассказывал про возможные неожиданности при сравнении вещественных чисел. Правда, не на этой площадке. Но ссылка есть, можете почитать. Сегодня продолжу тему и расскажу про округление. Хотя в той же статье по ссылке я об этом говорил, здесь немного дополню. Современные процессоры достаточно умны и часто правильно обрабатывают ошибки округления. Если, например, вы разделите 10 на 3, а потом результат снова умножите на 3, то на современных компьютерах, скорее всего, вы получите 10. То есть вот такой код: float x; float z; x = 10.0 / 3.0; z = x * 3.0; cout << z << endl; выведет на экран число 10 (пример на языке С++). Но на старых компьютерах это может быть и не так. Например, вы можете в результате получить 9.9999. Это и называется ошибкой округления. Да и на современных компьютерах это в некоторых случаях тоже может случиться. Особенно осторожно надо использовать вещественные числа в операциях сравнения. Например, вот такой код: float x; float z; x = 10.0 / 3.0; z = x * 3.0; //z