^
в Java не означает возводить в степень. Это означает XOR.
можно использовать Java Math.pow()
, И Вы могли бы хотеть рассмотреть использование double
вместо int
—, который является:
double height;
double weight;
Примечание, что 199/100
оценивает к 1.
мы можем использовать
Math.pow(2, 4);
, это значит 2 для питания 4 (2^4)
ответ = 16
Слишком поздно для OP, конечно, но все еще... Реконструкция выражения как:
int bmi = (10000 * weight) / (height * height)
Устраняет всю плавающую точку и преобразовывает подразделение константой к умножению, которое должно выполниться быстрее. Целочисленная точность, вероятно, достаточна для этого приложения, но если это не затем:
double bmi = (10000.0 * weight) / (height * height)
все еще было бы улучшение.
Необходимо использовать ниже метода -
Math.pow (удвойте a, дважды b)
Возвращает значение первого аргумента, возведенного в степень второго аргумента.
Ваше вычисление вероятно преступник. Попытайтесь использовать:
bmi = weight / Math.pow(height / 100.0, 2.0);
, поскольку и height
и 100
целые числа, Вы, вероятно, получали неправильный ответ при делении. Однако 100.0
двойное. Я предлагаю, чтобы Вы сделали weight
двойное также. Кроме того, ^
оператор не для полномочий. Используйте Math.pow()
метод вместо этого.
^
не оператор, который Вы хотите. Вы ищете pow
функция java.lang.Math
.
можно использовать Math.pow(value, power)
.
Пример:
Math.pow(23, 5); // 23 to the fifth power
int weight=10;
int height=10;
double bmi;
bmi = weight / Math.pow(height / 100.0, 2.0);
System.out.println("bmi"+(bmi));
double result = bmi * 100;
result = Math.round(result);
result = result / 100;
System.out.println("result"+result);