С помощью Java 8 вы можете использовать метод format
..: -
System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0);
f
используется для значения floating
точки. 2
после десятичного знака, число десятичных знаков после .
Для большинства версий Java вы можете использовать DecimalFormat
: -
DecimalFormat formatter = new DecimalFormat("#0.00");
double d = 4.0;
System.out.println(formatter.format(d));
Как сказано выше, необходимо сделать умножение перед подразделением. Так или иначе Вы могли записать свое выражение с кастингом только делителя:
int height2 = (int)Math.Round(width2 * (height1 / (float)width1));
Сделайте умножение сначала (как долго, поскольку они вряд ли переполнятся), и второе подразделение.
3/4 == 0 в целочисленной математике (целочисленная математика не делает вокруг на подразделении, она усекает).
при реальной необходимости в округлении необходимо или работать в фиксированной точке, плавающей точке или игре вокруг с модулем.
Тщательно продуманное на сообщении Jeffery, начиная с Вас обычно лучший шанс усеченных необходимых десятичных чисел, чем Вы имеют переполнения 32-разрядного целого числа (и потому что умножение & подразделение является коммутативным), необходимо обычно делать умножение перед подразделением.
Никогда не бросайте для плавания, это имеет еще меньше точности, чем 32-разрядное целое число. Если Вы собираетесь использовать плавающую точку, всегда используйте дважды вместо плавания.
Я исправлю неправильный код путем добавления нулевых строк кода:
float width1 = 4;
float height1 = 3;
float width2 = 137;
float height2 = width2 * (height1 / width1);
необходимо использовать плавания для переменных, которые могут возможно содержать десятичные числа. Это включает высоты, вычисленные от отношений. Можно всегда бросить к интервалу позже, если это - проблема.
int height2 = ((width2 * height1 * 10) + 5) / (width1 * 10);
До любого целочисленного деления, проверьте, чтобы удостовериться, что делитель не является нулем. Также обратите внимание, что это принимает положительное частное. Если отрицательный, округление должно быть-5, не +5.