Оператор «<» не может быть применен к операндам типа «double» и «decimal» - PullRequest
0 голосов
/ 13 октября 2018

У меня возникла проблема при попытке запустить эту программу в VS.Любая помощь?Я получаю ошибку:

Оператор '<' не может быть применен к операндам типа 'double' и 'decimal' </p>

class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Please enter your height (in metres).");
            double height = Convert.ToDouble(Console.ReadLine());

            Console.WriteLine("Please enter your weight (in kilograms).");
            double weight = Convert.ToDouble(Console.ReadLine());

            double kv_height = height * height;

            double bmi = weight / kv_height;

            Console.WriteLine("Your BMI is: " + bmi);
            if(bmi < 18.5)
            {
                Console.WriteLine("(Underweight)");
            }
            ***if(18.5 < bmi < 24.9)***
            Console.ReadKey();
        }
    } 

if (18.5 < bmi < 24.9) вызываетОшибка.Я новичок в C #, поэтому прошу прощения за любой грязный код.

Ответы [ 2 ]

0 голосов
/ 13 октября 2018

< оператор - это бинарный оператор в C #.Это означает, что он работает с двумя операндами - левый операнд и правый операнд.То, что произошло в вашем случае, - это оценка слева и началась со сравнения:

18.5 < bmi

Это дает bool результат - либо true, либо false.По сути, этот результат затем может быть помещен вместо выражения:

true/false < 24.9

В основном код затем пытается использовать оператор < для типов данных bool и double.Это нельзя сравнить в C #, так как bool не имеет неявного преобразования в число.

Чтобы исправить это, вам нужно использовать другой двоичный оператор - && и выполнить два отдельных сравнения:

18.5 < bmi && bmi < 24.9

Если оба условия true, все выражение будет true.

0 голосов
/ 13 октября 2018
if(18.5 < bmi && bmi < 24.9)

В математике мы используем 18,5

...