运算符“ <”不能应用于类型为“ double”和“ decimal”的操作数

时间:2018-10-13 09:34:37

标签: c# console-application

尝试在VS中运行此程序时遇到问题。有什么帮助吗?我得到的错误是:

  

运算符'<'不能应用于类型'double'和'decimal'的操作数

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 :(得分:2)

<运算符是C#中的二进制运算符。这意味着它可以使用两个操作数-左侧操作数和右侧操作数。您的情况是从左侧开始进行评估,然后开始进行比较:

18.5 < bmi

这将产生bool的结果-truefalse。从本质上讲,该结果可以代替表达式:

true/false < 24.9

基本上,代码然后尝试对<bool数据类型使用double运算符。在C#中无法对此进行比较,因为bool没有隐式转换为数字。

要解决此问题,您需要使用另一个二进制运算符-&&并进行两个单独的比较:

18.5 < bmi && bmi < 24.9

如果两个条件均为true,则整个表达式为true

答案 1 :(得分:0)

if(18.5 < bmi && bmi < 24.9)

在数学中,我们使用18.5