也许在这里问这个问题是错误的,但我很好奇。我知道许多语言在被要求除以 0 时会简单地爆炸并失败,但是有没有任何编程语言可以智能地处理这个不可能的总和 - 如果是这样,它们会做什么?他们是继续处理,将 350/0 视为 350,还是停止执行,或者什么?
我有许多由Solr 3.5索引的文档,其中包含日期字段(solr.DateField)等.现在我请求Solr组件,它应该返回没有结果:
http://example.com/solr/select?fq=sis_field_int:1000&
stats=true&stats.field=ds_field_date
Run Code Online (Sandbox Code Playgroud)
并得到错误
HTTP Status 500 - / by zero java.lang.ArithmeticException: / by zero at
org.apache.solr.handler.component.DateStatsValues.addTypeSpecificStats
(StatsValuesFactory.java:384) at ...
Run Code Online (Sandbox Code Playgroud)
如果我发送没有统计信息的请求,或者指定任何非日期统计字段,我得到预期的响应而没有结果.它看起来像Solr的一个错误,它试图在这种情况下计算平均值.不幸的是我没有找到关于这个问题的参考资料.有没有办法绕过或解决问题?
我想知道是否可能有一个设置我忽略强制R返回NaN而不是± Inf除以零.
我经常发现自己在做类似的事情
results[is.infinite(results)] <- NaN
Run Code Online (Sandbox Code Playgroud)
我希望完全跳过过滤/搜索过程.
### Example:
num <- c(1:5, NA)
denom <- -2:3
quotient <- num / denom
[1] -0.5 -2.0 Inf 4.0 2.5 NA
# desired results
[1] -0.5 -2.0 NaN 4.0 2.5 NA
Run Code Online (Sandbox Code Playgroud)
实现预期结果的简单方法是:
quotient[is.infinite(quotient)] <- NaN
Run Code Online (Sandbox Code Playgroud)
我想知道的是,如果最后一步可以避免,同时仍然得到相同的预期结果.
我的应用程序中有这样的东西:
def something(x: Int, y: Int) Z {
(x / y)
}
Run Code Online (Sandbox Code Playgroud)
现在,如果someval不是数字(意味着x或y等于0),那么我希望Z变为0而不是显示错误([ArithmeticException: Division by zero])
我知道我能做到:
Try(someVale) orElse Try(0)
Run Code Online (Sandbox Code Playgroud)
但是,这会给我,Success(0)而我只是想0在这种情况下给我一个.
也许if ArithmeticException then 0在Scala中有类似的东西可以删除"成功"和括号.有人可以解决一些问题吗?
我正在划分两个numpy数组:
>>> import numpy as np
>>> a1 = np.array([[ 0, 3],
[ 0, 2]])
>>> a2 = np.array([[ 0, 3],
[ 0, 1]])
>>> d = a1/a2
>>> d
array([[ nan, 1.],
[ nan, 2.]])
>>> where_are_NaNs = np.isnan(d)
>>> d[where_are_NaNs] = 0
>>> d
>>> array([[ 0., 1.],
[ 0., 2.]])
Run Code Online (Sandbox Code Playgroud)
我正在寻找一种方法来获得0而不是使用for循环的Nan?
numpy fillna()和pandas 有类似的功能吗?
史前史:
我们刚刚将开发环境从VC ++ 2008切换到了VC ++2015。此后,我们发现了一个问题:尽管在C ++代码中测试了除法器,程序仍将除以0。
测试代码:
#include <cstdlib>
int test(int n, int test_for_zero)
{
int result = 0;
for (int i = 0; i < n; ++i) {
if (test_for_zero)
result += rand() >> ((8 % test_for_zero) * test_for_zero);
}
return result;
}
int main()
{
return test(rand(), rand() & 0x80000000);
}
Run Code Online (Sandbox Code Playgroud)
由具有默认发布选项的VC ++ 2015 Update 3或VC ++ 2017编译,运行时它将除以零。VC 2008编译运行良好。
分析:
; 6 : for (int i = 0; i < n; ++i) {
test edi, edi
jle SHORT …Run Code Online (Sandbox Code Playgroud) divide-by-zero compiler-optimization visual-c++ visual-studio-2015 visual-studio-2017
创建 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 (屏蔽平均值)的文档,但无法理解如何实现它
这种行为有何意义?仅打印编译器警告而不是错误不是更有意义吗?
func main() {
var y float64 = 0.0
var x float64 = 4.0 / y
fmt.Println(x)
}
Run Code Online (Sandbox Code Playgroud)
+信息
func main() {
var x float64 = 4.0 / 0.0
fmt.Println(x)
}
Run Code Online (Sandbox Code Playgroud)
prog.go:9:22:除以零
以下代码源自此处的一个问题。(我知道代码有几个逻辑问题,但我不明白它们是如何导致这个问题的。)
编辑: 我在 Windows 上使用 CLANG,并显示常见的编译警告。
它产生在所指示的线被零除故障(第一循环中的语句。),但也有没有明显的分歧。任何人都可以提供一些有关为什么会发生此错误的见解吗?
编辑 2:每评论:将函数中的第三个参数sepia从
void sepia(int height, int width, RGBTRIPLE image[height][width])
Run Code Online (Sandbox Code Playgroud)
到
void sepia(int height, int width, RGBTRIPLE image[3][4])
Run Code Online (Sandbox Code Playgroud)
消除除以零误差。为什么?
typedef struct {
double rgbtRed;
double rgbtGreen;
double rgbtBlue;
}RGBTRIPLE;
RGBTRIPLE image[3][4];
void sepia(int height, int width, RGBTRIPLE image[height][width])
{
double sepiaRed = 0.0;
double sepiaGreen = 0.0;
double sepiaBlue = 0.0;
// over height
for (int h = 0; h < height; h++)
{
// over width …Run Code Online (Sandbox Code Playgroud) 我有以下代码示例:
(type (apply / [5.0 0]))
Run Code Online (Sandbox Code Playgroud)
它引发意外错误 - “除以零”(预期行为:返回 Inf)
可能是由于自动装箱而发生的 - 可以预防吗?