У меня есть эта функция следующим образом:
private int Calc_bmi(int userid, int wt, int ht) {
int bmi = ((wt / ht) / ht) * 10000;
}
Значения переменных wt и ht верны. Я также пробовал использовать float bmi, а также Convert.ToInt32, но, похоже, это не работает. Каждый раз возвращает 0. Что я делаю неправильно?
@UweKeim, как мне его преобразовать?
@UweKeim Мне нужно преобразовать wt и ht в float?
Какие у вас единицы? Целочисленное деление просто дает вам целочисленный результат деления (без остатка). Например, 5/3 дает 1. Разделите его еще раз на 3, и вы получите 0. Почему вы используете целые числа, а не числа с плавающей запятой или десятичные числа?
Чтобы преобразовать их, сделайте следующее: (((double)wt/ht) /ht). Если вы разделите число с плавающей запятой на целое число, вы получите число с плавающей запятой
Прежде чем ничего не конвертировать, я бы проверил, почему он каждый раз возвращает 0... Я представляю wt=4 и ht=2, и, конечно, результат вашей операции не 0 (4 / 2 = 2 / 2 = 1 * 10000 = 10000 )





Вы должны преобразовать wt и ht в число с плавающей запятой:
class Program
{
static void Main(string[] args)
{
int bmi = Calc_bmi(12, 10, 20);
Console.WriteLine(bmi);
Console.ReadLine();
}
private static int Calc_bmi(int userid, int wt, int ht)
{
float fWt = (float)wt;
float fHt = (float)ht;
float bmi = ((fWt / fHt) / fHt) * 10000;
return Convert.ToInt32(bmi);
}
}
Вам действительно нужно преобразовать только один из них, но...
int div int есть int. Лучше бросать плавать раньше. Похоже на дубликат.