Повышение числа на Java
Вот мой код. По какой-то причине мой ИМТ рассчитывается неправильно.
Когда я проверяю вывод на калькуляторе для этого: (10/((10/100)^2)))
Я получаю 1000, но в моей программе я получаю 5. Я не уверен, что я делаю неправильно. Вот мой код:
import javax.swing.*;
public class BMI {
public static void main(String args[]) {
int height;
int weight;
String getweight;
getweight = JOptionPane.showInputDialog(null, "Please enter your weight in Kilograms");
String getheight;
getheight = JOptionPane.showInputDialog(null, "Please enter your height in Centimeters");
weight = Integer.parseInt(getweight);
height = Integer.parseInt(getheight);
double bmi;
bmi = (weight/((height/100)^2));
JOptionPane.showMessageDialog(null, "Your BMI is: " + bmi);
}
}
Ответы
Ответ 1
^
в java не означает повышение до уровня мощности. Это означает XOR.
Вы можете использовать java Math.pow()
И вам может потребоваться использовать double
вместо int
- это:
double height;
double weight;
Обратите внимание, что 199/100
имеет значение 1.
Ответ 2
мы можем использовать
Math.pow(2, 4);
это среднее значение 2 до степени 4 (2 ^ 4)
answer = 16
Ответ 3
Ваш расчет, вероятно, является виновником. Попробуйте использовать:
bmi = weight / Math.pow(height / 100.0, 2.0);
Поскольку оба height
и 100
являются целыми числами, вы, вероятно, получаете неправильный ответ при делении. Однако 100.0
является двойным. Я предлагаю вам сделать weight
двойной. Кроме того, оператор ^
не имеет полномочий. Используйте вместо этого метод Math.pow()
.
Ответ 4
^
- не тот оператор, который вы хотите. Вы ищете pow
функцию java.lang.Math
.
Вы можете использовать Math.pow(value, power)
.
Пример:
Math.pow(23, 5); // 23 to the fifth power
Ответ 5
Слишком поздно для OP, но все же...
Переупорядочение выражения как:
int bmi = (10000 * weight) / (height * height)
Устраняет все значения с плавающей запятой и преобразует деление на константу в умножение, которое должно выполняться быстрее. Целочисленная точность, вероятно, подходит для этого приложения, но если это не так:
double bmi = (10000.0 * weight) / (height * height)
все равно будет улучшением.
Ответ 6
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);
Ответ 7
Вы должны использовать ниже method-
Math.pow (двойной а, двойной б)
Возвращает значение первого аргумента, возведенного в степень второго аргумента.