(int) d / 2.0
(long) d * 2f
Вы по-прежнему занимаетесь математикой с плавающей запятой, т. Е. Один операнд все еще является двойным / с плавающей точкой, и, следовательно, результатом является двойное / с плавающей запятой.
"2" + x + 2
"3" + 3 * x
Первым будет просто конкатенация, то есть тип выражения будет String
, и, таким образом, все операнды преобразуются в строку. За x=1
вы получите "212"
.
Второе подчиняется приоритету оператора, то есть *
вычисляется перед +
, и, таким образом, выражение 3 * x
является целочисленной математической операцией, результат которой затем будет преобразован в строку как "3" + result
.
"5" + i + 2
Ошибка в вашем коде, опубликовать исключение. Скорее всего i
не определено.
d++ + d
Посмотрите на операторы приоритета и постинкрементные операторы. x++
вернет значение x
, а затем увеличит его. Тогда предыдущее значение x
будет добавлено к новому значению. Вы можете думать, что это похоже на x + (x+1)
.
Когда используется Math.round, почему он конвертирует следующий double в число с плавающей точкой, или это одно и то же?
Math.round (x / d)
Там нет преобразования, только перегруженный метод (один берет двойное, а другое - плавающее). В основном float
имеет меньшую точность, чем double
, но оба являются числами с плавающей запятой.