【问题标题】:&& operator for double&& 运算符用于双精度
【发布时间】:2012-07-26 07:36:13
【问题描述】:

我需要一些关于 if 语句和运算符的帮助。我怎么能这样做:

double AgePenalty = 0;
if (AgeOfCustomer <= 21)
{
    AgePenalty = 15;
}
if (AgeOfCustomer <= 30 && AgeOfCustomer => 21) // cant use && operator with double
{
    AgePenalty = 10;
}

这只是说如果客户小于 21 岁,则应用某个价格标签;如果客户年龄在 21 至 25 岁之间,则应用较小的价格标签等。

【问题讨论】:

  • 将来,当您的代码出现编译时错误时,请在您的问题中包含该错误。
  • 来吧@JungleBoogie,现在是爱之夏,你知道吗?那段没有必要
  • 哈哈我认识人!只是轻轻戳一下这位善良的老巨人!我相信他会微笑:)

标签: c#


【解决方案1】:

您的支票AgeOfCustomer =&gt; 21 错了,应该是:AgeOfCustomer &gt;= 21 只需将您的 if 语句更改为

  if (AgeOfCustomer <= 30 && AgeOfCustomer >= 21)

【讨论】:

    【解决方案2】:

    问题不在于&amp;&amp; - 是您的大于或等于运算符,即&gt;=,而不是=&gt;

    if (AgeOfCustomer <= 30 && AgeOfCustomer >= 21)
    

    =&gt; 用于lambda expressions

    (不清楚为什么你认为这与双打有关...)

    【讨论】:

    • @AndreCalil:不,它给出了一个编译时错误(当然应该包含在问题中)。
    • 与此相关的错误是 Operator '&amp;&amp;' cannot be applied to operands of type 'bool' and 'double' 因此标题。
    • 看起来编译器将lamba结果作为布尔值,这就是为什么你不能在逻辑上同时测试double和bool
    • @JungleBoogie:这非常很奇怪 - 这不是我在尝试编译类似内容时看到的错误。您确定代码与您发布的完全一致吗?
    • @JonSkeet 在问题中上传了一个屏幕截图(希望你不介意幽默,但你的名人!)抱歉没有抓住客户的年龄,但它只是一个两倍。
    【解决方案3】:

    最好用下面的方式写

    double AgePenalty = 0;
            if (AgeOfCustomer <= 21)
            {
                AgePenalty = 15;
            }
            else if (AgeOfCustomer <= 30) // as check is done for 21 already.
            {
                AgePenalty = 10;
            }
    

    上面的代码几乎没有优化。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-09-24
      • 1970-01-01
      • 2017-10-04
      • 1970-01-01
      • 2018-11-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多