【问题标题】:How to fix divide by zero in asp.net razor如何在asp.net razor中修复除以零
【发布时间】:2014-04-20 17:30:17
【问题描述】:

我有一组查询字符串,如下所示:

var nq = db.QueryValue("select COALESCE(COUNT(*),0)from OPPORTUNITY where START_DATE = DATEDIFF(d,0,getdate())");  
var nrt = db.QueryValue("select COALESCE(COUNT(*),0)from OPPORTUNITY where START_DATE = DATEDIFF(d,0,getdate()) and OPPORTUNITY_STAGE = '-1'");  
var nrep = nrt / nq;

它给我的只是未处理的例外:不能除以零。

前两个查询结果中的一个或两个中通常会出现零。如何让它显示 NaN(不是数字)而不是崩溃?

我确定我以前曾问过这个问题,但我似乎无法找到答案。

提前致谢。

【问题讨论】:

    标签: asp.net sql razor


    【解决方案1】:

    你可以简单地替换

    var nrep = nrt / nq;
    

    Double nrep = Double.NaN;
    if (nq != 0)
    {
        nrep = nrt / nq;
    }
    

    【讨论】:

    • 它说“预期{但发现 nrep”
    • 我认为会奏效的。我在下面使用了@John Woo 的答案。
    • 其实我都试过了,但我更喜欢john的版本。我确实要求 NaN,但约翰给了我 0.00,这在显示端更“用户友好”。但是,是的,您的回答确实有效。
    • @Bevan 没问题,我很高兴它有所帮助,而且它也将帮助未来的用户。
    • 好点。许多其他人会阅读此线程,有些人会使用您的代码。
    【解决方案2】:

    添加IF条件怎么样?

    var nq = db.QueryValue("select COALESCE(COUNT(*),0)from OPPORTUNITY where START_DATE = DATEDIFF(d,0,getdate())");
    
    var nrep = 0;
    if (nq != 0)
    {
    var nrt = db.QueryValue("select COALESCE(COUNT(*),0)from OPPORTUNITY where START_DATE = DATEDIFF(d,0,getdate()) and OPPORTUNITY_STAGE = '-1'");
    nrep = nrt / nq;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-09-03
      • 1970-01-01
      • 2020-12-15
      • 2015-03-16
      • 2012-04-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多