标签: divide-by-zero

SQL Server检查IsNull和零

我有以下内容:

set @SomeVariable = @AnotherVariable/isnull(@VariableEqualToZero,1) - 1 
Run Code Online (Sandbox Code Playgroud)

如果@VariableEqualToZero为null,则替换为1.如果@VariableEqualToZero = 0,我需要它替换1.我该怎么做呢?

sql sql-server isnull divide-by-zero

12
推荐指数
2
解决办法
7万
查看次数

除以零的结果是什么?

要清楚,我不是在寻找NaN或无穷大,或者问x/0应该是什么答案.我正在寻找的是:

基于分工是如何在硬件中执行的(我不知道它是怎么做的),如果师们用的0除数来执行,处理器只是通过操作喝着十分满意,你会来的吧?

我意识到这很大程度上取决于股息,所以对于一个具体的答案,我问这样:如果计算机遵循标准的分工操作,计算机会吐出什么42 / 0

更新:

我会试着更清楚一些.我问的是在位级别用数字完成的实际操作是为了达到解决方案.操作的结果只是位.当发现除数为零时,NaN和错误/异常发挥作用.如果分裂实际发生了,会出现什么位?

theory divide-by-zero

12
推荐指数
3
解决办法
4204
查看次数

如何消除模板代码中的"除以0"错误

我使用一对整数模板参数来指定比率,因为我不能使用double作为模板参数.转换为双精度可以防止零三进制.这在早期版本的编译器中有效,但Visual Studio 2013出现错误:

error C2124: divide or mod by zero
Run Code Online (Sandbox Code Playgroud)

这是代码的简化版本:

template<int B1, int B2>
class MyClass
{
    const double B = (B2 == 0) ? 0.0 : (double) B1 / (double) B2;
    // ...
};

MyClass<0, 0> myobj;
Run Code Online (Sandbox Code Playgroud)

我真的希望B在零时使用它的表达式进行优化,所以我需要单行定义.我知道我可以使用模板参数<0, 1>来解决它,但我想知道是否有办法说服编译器我的表达式是安全的?

c++ templates divide-by-zero visual-studio-2013

12
推荐指数
1
解决办法
1356
查看次数

如何使故意划分为零?

出于测试原因,我想在我的C++代码中将除以零.我写了这段代码:

int x = 9;
cout << "int x=" << x;
int y = 10/(x-9);
y += 10;
Run Code Online (Sandbox Code Playgroud)

我看到屏幕上印有"int = 9",但应用程序没有崩溃.是因为一些编译器优化(我用gcc编译)?可能是什么原因?

c++ divide-by-zero

11
推荐指数
2
解决办法
1552
查看次数

如何通过-0.0和0.0得到Python除法分别得到-Inf和Inf?

我有一种情况,即除以0.0或-0.0是合理的,我希望分别看到+ Inf和-Inf作为结果.似乎Python喜欢抛出一个

ZeroDivisionError: float division by zero
Run Code Online (Sandbox Code Playgroud)

在任一情况下.显然,我认为我可以用0.0的测试简单地包装它.但是,我找不到区分+0.0和-0.0的方法.(仅供参考,您可以通过键入或通过常见计算(例如-1.0*0.0)轻松获得-0.0.

IEEE非常好地处理了这一切,但Python似乎很难隐藏经过深思熟虑的IEEE行为.事实上,0.0 == -0.0实际上是一个IEEE功能,因此Python的行为严重破坏了事情.它在C,Java,Tcl甚至JavaScript中运行良好.

建议?

python ieee-754 divide-by-zero python-2.7

11
推荐指数
2
解决办法
1424
查看次数

Coq QArith除以零是零,为什么?

我注意到在Coq对有理数的定义中,零的倒数被定义为零.(通常,除以零没有明确定义/合法/允许.)

Require Import QArith.
Lemma inv_zero_is_zero: (/ 0) == 0. 
Proof. unfold Qeq. reflexivity. Qed.
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

它可能会导致有理数的计算出现问题,还是安全的?

rational-numbers divide-by-zero coq

11
推荐指数
1
解决办法
808
查看次数

整数除以零的平台会触发浮点异常?

在另一个问题中,有人想知道为什么他们得到一个"浮点错误",实际上他们的C++程序中有一个整数除零.围绕这一点进行了讨论,其中一些断言浮点异常实际上从未因浮点除以零而增加,而只是在整数除以零时出现.

这听起来很奇怪,因为我知道:

  1. 所有Windows平台上x86和x64上的MSVC编译代码报告int除以零为"0xc0000094:整数除以零",浮点除以零为0xC000008E"浮点除以零"(启用时)

  2. IA-32和AMD64 ISA指定#DE(整数除法异常)作为中断0.浮点异常触发中断16(x87浮点)或中断19(SIMD浮点).

  3. 其他硬件具有类似的不同中断(例如, PPC在float-div-by上引发0x7000并且根本不捕获int/0).

  4. 我们的应用程序使用_controlfp_s内部(最终stmxcsr操作)取消屏蔽零除零的浮点异常,然后捕获它们以进行调试.所以我在实践中肯定会看到IEEE754被零除的异常.

因此,我得出结论,有些平台将异常作为浮点异常报告,例如x64 Linux(无论ALU管道如何,都会针对所有算术错误提升SIGFPE).

其他操作系统(如果您操作系统,还是C/C++运行时)报告整数除零作为浮点异常?

c c++ error-handling x86-64 divide-by-zero

11
推荐指数
2
解决办法
2302
查看次数

除以零错误,我该如何解决这个问题?

C#新手在这里,当下面的int'max'为0时我得到除零错误,我可以看出为什么会发生这种情况但是当max为0时我应该如何处理呢?位置也是一个int.

    private void SetProgressBar(string text, int position, int max)
    {
        try
        {
            int percent = (100 * position) / max; //when max is 0 bug hits
            string txt = text + String.Format(". {0}%", percent);
            SetStatus(txt);
        }
        catch
        {
        }
    }
Run Code Online (Sandbox Code Playgroud)

c# divide-by-zero

10
推荐指数
3
解决办法
3万
查看次数

尽管没有列包含0,但TSQL除以零

我一直试图理解为什么我的SQL查询得到了"除以零"(Msg 8134),但我必须遗漏一些东西.我想知道为什么对于下面的具体情况,我不是在寻找NULLIF,CASE WHEN...或者与我已经了解的相似(当然可以在下面的情况下使用它们).

我有一个SQL语句与计算列类似

SELECT
    TotalSize,
    FreeSpace,
    (FreeSpace / TotalSize * 100)
FROM
    tblComputer
...[ couple of joins ]...
WHERE
    SomeCondition = SomeValue
Run Code Online (Sandbox Code Playgroud)

使用上面提到的错误消息运行此语句错误,这本身不是问题 - 显然TotalSize可能是0并因此导致错误.

现在我不明白的是,TotalSize当我将计算列注释掉时,我没有任何列为0的行,我仔细检查过不是这种情况.

然后我认为由于某种原因,在使用where子句的条件进行实际过滤之前,将对整个结果集执行列计算,但是这个a)在imho和b)尝试使用a重现错误时没有意义测试设置一切正常(见下文):

INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0001',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0002',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0003',1)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0004',0)
INSERT INTO tblComputer (ComputerName, IsServer) VALUES ('PC0005',1)
INSERT …
Run Code Online (Sandbox Code Playgroud)

t-sql calculated-columns divide-by-zero

10
推荐指数
1
解决办法
3943
查看次数

Scala除以零会产生不同的结果

我对Scala处理除零的方式感到困惑.这是一个REPL代码片段.

scala> 1/0
java.lang.ArithmeticException: / by zero
  ... 33 elided

scala> 1.toDouble/0.toDouble
res1: Double = Infinity

scala> 0.0/0.0
res2: Double = NaN

scala> 0/0
java.lang.ArithmeticException: / by zero
  ... 33 elided

scala> 1.toInt/0.toInt
java.lang.ArithmeticException: / by zero
  ... 33 elided
Run Code Online (Sandbox Code Playgroud)

正如您在上面的示例中所看到的,取决于您如何除以零,您将获得以下之一:

  • "java.lang.ArithmeticException:/ by zero"
  • "双= NaN"
  • "Double = Infinity"

这使得调试非常具有挑战性,尤其是在处理未知特征的数据时.这种方法背后的原因是什么,甚至更好的问题,如何在Scala中以统一的方式处理除零?

java scala arithmetic-expressions divide-by-zero

10
推荐指数
2
解决办法
1235
查看次数