标签: divide-by-zero

当划分1 /一个非常小的浮子时会发生坏事吗?

如果我想检查正浮点数A是否小于另一个正浮点数B的倒数平方(在C99中),如果B非常小,可能会出错吗?

我可以想象检查它

if(A<1/(B*B))
Run Code Online (Sandbox Code Playgroud)

但如果B足够小,这可能会导致无穷大吗?如果发生这种情况,代码是否仍能在所有情况下正常工作?

我也许会这样做

if(1/A>B*B)
Run Code Online (Sandbox Code Playgroud)

...这可能会稍微好些,因为如果B很小,B*B可能为零(这是真的吗?)

最后,我无法想象的解决方案是

if(sqrt(1/A)>B)
Run Code Online (Sandbox Code Playgroud)

我认为这不会导致零分割,但如果A接近于零,仍可能存在问题.

所以基本上,我的问题是:

  • 如果X大于零(但很小),1/X是否可以无穷大?
  • 如果X大于零,X*X能否为零?
  • 与无限的比较会按照我期望的方式进行吗?

编辑:对于那些想知道的人,我最终做了

if(B*A*B<1) 
Run Code Online (Sandbox Code Playgroud)

我按顺序做了,因为它在视觉上是明确的,首先发生乘法.

c floating-point division divide-by-zero

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

Java:打印出一个对象进行调试

我想要一种简单的方法来打印出一个java对象,或者换句话说,将一个对象序列化为一个字符串.我想看到对象中包含的所有变量的值,如果有更多的对象(如列表或其他),它也应该打印出该对象中的东西.基本上,它会像JSON编码,但JSON不支持无穷大,我需要查看其中一个double或float值是否存在无穷大或NaN.

我怎样才能做到这一点?

java json tostring infinity divide-by-zero

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

PowerShell - 为什么"除以零例外"没有被抓住?

在我的机器上,以下每个代码片段抛出异常而不是打印到标准输出"1"和"2"为什么异常没有被捕获?

try {
    [int]$a = 1/0
}
catch {
    write 1
}
finally {
    write 2
}

try {
    [int]$a = 1/0
}
catch [System.Exception] {
    write 1
}
finally {
    write 2
}
Run Code Online (Sandbox Code Playgroud)

.net powershell exception-handling divide-by-zero powershell-2.0

7
推荐指数
1
解决办法
3218
查看次数

PHP警告:除以零

我正在学习php并构建了一个基于表单的实验计算器(也使用html和POST方法),它将值返回给表.当我输入我的值并单击提交时,计算器正常工作,但是当我第一次运行代码时,我在最后一行上得到两个"除以零"错误.在这里或通过Google搜索时,我似乎无法找到合理的解决方案或解释.您可以向newb提供任何解释,我们将不胜感激.

<?php 

error_reporting(E_ALL ^ E_NOTICE);

//calculate the difference in price

$itemQty = $_POST['num1'];

$itemCost = $_POST['num2'];

$itemSale = $_POST['num3'];

$shipMat = $_POST['num4'];

$diffPrice = $itemSale - $itemCost;

$actual = ($diffPrice - $shipMat) * $itemQty;

$diffPricePercent = (($actual * 100) / $itemCost) / $itemQty ;

?>
Run Code Online (Sandbox Code Playgroud)

php divide-by-zero

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

如何防止零除?

ads = ads.Where(x => (x.Amount - x.Price) / (x.Amount / 100) >= filter.Persent);
Run Code Online (Sandbox Code Playgroud)

如果x.Amount == 0我有错误"遇到零除错误".

喜欢我在这个要求是避免?

更新:

这有帮助,但我不喜欢这个决定:

ads = ads.Where(x => (x.Amount - x.Price) / ((x.Amount / 100)==0?0.1:(x.Amount / 100)) >= filter.Persent);
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?

c# linq divide-by-zero

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

如何在Python中分割2个列表时处理List Comprehensions中的除零异常

如何在Python中分割2个列表时处理List Comprehensions中的除零异常:

从下面的例子:

from operator import truediv
result_list = map(truediv, [i for i in list1], [j for j in list2])
Run Code Online (Sandbox Code Playgroud)

其中list2可以包含0作为值.

由于我的代码约束,我想在同一行中处理异常.请帮我.

python django list divide-by-zero

6
推荐指数
1
解决办法
1193
查看次数

每次分裂发生时,我都可以禁用零分割检查吗?

为了更好地理解Rusts恐慌/异常机制,我编写了以下代码:

#![feature(libc)]

extern crate libc;

fn main() {
    let mut x: i32;
    unsafe {
      x = libc::getchar();
    }

    let y = x - 65;
    println!("{}", x);

    let z = 1 / y;
    println!("{}", z);
}
Run Code Online (Sandbox Code Playgroud)

我想检查Rust如何处理除零案例.最初我假设它要么面对未处理的SIGFPE并且正在死亡,要么实施了一个处理程序并将其重新路由到恐慌(现在可以处理?).

代码是冗长的,因为我想确保Rust在编译时知道某些东西是零,因此用户输入时不会做任何"智能".只要给它一个'A'就可以了.

我发现Rust实际上产生的代码每次在除法发生之前检查零除法.我甚至看了一次装配.:-)

长话短说:我可以禁用此行为吗?我想对于较大的数据集,这可能会产生很大的性能影响.为什么不使用我们的CPU能力为我们检测这些东西?我可以设置自己的信号处理程序并处理SIGFPE吗?

根据Github上一个问题,前一段时间的情况肯定是不同的.

我认为事先检查每个部门远离"零成本".你怎么看?我错过了一些明显的东西吗

performance exception divide-by-zero rust

6
推荐指数
2
解决办法
1270
查看次数

c ++中的"if"语句不会从左到右评估条件

为了理解c ++中"if"语句的评估顺序,我指的是问题" "IF"参数评估顺序? ".

下面是if语句中的条件以错误的顺序计算的代码.

#include <iostream>

using namespace std;

int main()
{
    int t = 0;
    if((1 / t) == 1 && t != 0)
    {
        cout << "0" << endl;
    }

    cout << "1" << endl;

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

结果是1而不是浮点异常.

c++ integer-division divide-by-zero c++11 c++14

6
推荐指数
2
解决办法
517
查看次数

Pandas/numpy 加权平均 ZeroDivisionError

创建 lambda 函数来计算加权平均值并将其发送到字典。

wm = lambda x: np.average(x, weights=df.loc[x.index, 'WEIGHTS'])

# Define a dictionary with the functions to apply for a given column:
f = {'DRESS_AMT': 'max', 
     'FACE_AMT': 'sum',
     'Other_AMT': {'weighted_mean' : wm}}

# Groupby and aggregate with dictionary:
df2=df.groupby(['ID','COL1'], as_index=False).agg(f)
Run Code Online (Sandbox Code Playgroud)

此代码有效,但如果权重总计为 0 ,则加权平均 lambda 函数会失败ZeroDivisionError。在这些情况下,我希望输出“Other_AMT”仅为 0。

我阅读了有关使用 np.ma.average (屏蔽平均值)的文档,但无法理解如何实现它

python numpy divide-by-zero weighted-average pandas

5
推荐指数
1
解决办法
4162
查看次数

是否可以强制 Clojure 使用原始类型而不是盒装版本?

我有以下代码示例:

(type (apply / [5.0 0]))
Run Code Online (Sandbox Code Playgroud)

它引发意外错误 - “除以零”(预期行为:返回 Inf)

可能是由于自动装箱而发生的 - 可以预防吗?

java boxing clojure division divide-by-zero

5
推荐指数
1
解决办法
252
查看次数