Как работает умножение деление для переменной типа инт?
Столкнулся с одной проблемой в задаче, и в процессе поиска решения натолкнулся на интиресный нюанс, который вот в этом коде ideone.com/JsF87w (нюанс для меня)
почему ответ равен 100?, хотя должен быть 90
int не может содержать числа с плавающей точкой. Поэтому при операциях с типом int дробная часть просто отбрасывается, даже не округляется. Поэтому в ответе получается 100 - 0 * 100 = 100.
automatik: вопрос: если я объявлю в своем примере переменную float res = ... то оно будет считать int с запятой уже, или нужно и все предыдущие делать float?
AlexMark: если в операции будут переменные разных типов, то будет ошибка. Нужно во время операции приводить к одному типу, либо объявлять все одним типом.
automatik: благодараю... извините за множество вопросов, просто только учу джаву...
и вот подскажите, только что посмотрел на Math.round() фию, разве не лучше использовать Math.ceil(), ведь предыдущая вроде также округлить до 0?
AlexMark: нет, Math.round() округляет по правилам. Скорее всего вы её использовали в операцях с int. А int всегда будет содержать целочисленную часть, пока не будет использовано приведение типов. А вот как раз Math.ceil при операции Math.ceil(5.1); вернет 6.0, т.к. эта функция возвращает наименьшее целое, большее или равное аргументу.