问题标签 [underflow]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
535 浏览

c# - C# Math.Max 类型处理

我正在编写一段代码来防止 ushort 溢出/下溢。在此之前,我尝试:

然后我编写真正的代码,我希望这会“失败”(无法检测到下溢):

有趣的是,一个错误(CS0266)阻止我构建它。虽然我希望 C# 将使用ushort Max(ushort, ushort)重载,但它正在使用int Max(int, int)重载并且ushort值会自动转换为int。当然,当我明确地将结果转换ushort为此工作正常时。

这让我想,C# 是否检测到可能发生下溢,所以它int用来为我做比较?

0 投票
1 回答
364 浏览

c - 处理 C“if”条件中的下溢 - 使用布尔值

我有一个问题,我的算法遇到了一些下溢问题。我基本上是从贝塞尔曲线中寻找一条路径,为了解决这个问题,我必须使用一些向量乘法(叉积和点积),以使两个向量之间的角度和时钟计数器时钟方向从一个到另一个. 问题是当路径是直线时,其中一个控制变量有下溢问题,基本上阻塞执行并导致错误。

这是代码:

正如您在尝试避免错误时看到的那样,我设置了几个 if 条件,但还不够。其实问题大概来自dir=dx1 * dy2 - dx2 * dy1;。那是当沿 x 或 y 轴移动太小而不能浮动时。一位朋友建议使用布尔值,但我不确定如何。也许定义boolean dir;,然后如果值太小将是 0,否则将被视为 1,在这种情况下,我可以使用我现在使用的相同程序来检测方向。

您有什么建议或不同的解决方案吗?在此先感谢内德

0 投票
6 回答
580 浏览

c++ - 用于双精度加法和乘法的常量形式

我需要在循环中有效地将一些常量添加或乘以 double 类型的结果,以防止下溢。例如,如果我们有 int,则乘以 2 的幂将很快,因为编译器将使用位移位。是否有一种形式的常数可以有效地进行double加法和乘法?

编辑:似乎没有多少人理解我的问题,为我的草率道歉。我将添加一些代码。如果a是 int,这(乘以 2 的幂)会更有效

与将 1024 替换为 1023 相比。如果我们想添加到 int,不确定什么是最好的,但这不符合我的兴趣。我对a双倍的情况感兴趣。我们可以有效地添加乘以双精度数的常数形式(例如 2 的幂)是什么?常数是任意的,只需要足够大以防止下溢。

这可能不仅限于 C 和 C++,但我不知道更合适的标签。

0 投票
1 回答
2304 浏览

numpy - 使用 NumPy 避免联合概率的下溢

我面临一个问题,即在简单的设置中估计自变量的联合概率。目前我有一个包含 100 个随机变量的数组,我想在不陷入下溢问题的情况下获得它们的联合概率。任何想法如何在 numpy 中实现这一目标?如果可能的话?

如果没有,请向我进一步解释 NumPy 例程(logaddexp)的作用,因为我认为在这种情况下它可能对我有帮助。

0 投票
1 回答
492 浏览

c++ - 使用伪代码(上溢/下溢)协助 C++

我刚刚进入学校 C++ 的第 4 周,并希望得到正确的指导。

这就是任务要求我们的;

将 main 更改为在 try/catch 部分周围进行无限循环;在 try 块中询问长度和宽度;如果 cin 失败则返回,否则打印该区域,并打印该区域的 mysqrt。将您的程序命名为 hw3pr2.cpp。(回想一下,如果您键入的内容不是格式正确的 int,例如单词“end”,cin 将失败。)

我了解如何阅读代码,但我很难启动它,并且有点与“范围”混淆,到目前为止它编译正确但不断给我 Range Error: 10. 这是否意味着我正在使用课区错了?

有人可以指出我正确的方向吗?谢谢!

0 投票
2 回答
5594 浏览

python - python中非常小的数字的指数

我正在尝试计算python中-1200的指数(这是一个例子,我不需要-1200特别是-1200左右的数字集合)。

它给了我一个下溢;我该如何解决这个问题?

谢谢你的帮助 :)

0 投票
1 回答
4095 浏览

algorithm - HMM 前向算法中的下溢

我正在为 HMM 实现前向算法来计算给定 HMM 发出给定观察序列的概率。我希望我的算法对下溢具有鲁棒性。我不能在对数空间中工作,因为前向算法需要概率的乘法和加法。避免下溢的最佳方法是什么?

我已经阅读了一些关于此的资料,但我得到的最佳建议是在每个时间步第 6 节 Here缩放概率。在算法结束时,您将不会得到您想要的(观察序列的)确切概率。此外,除非我弄错了,如果您按照上述参考文献中的建议在每个时间步缩放概率,则无法对给定观察序列来自两个不同 HMM 的概率进行有意义的比较(找出哪个一个更有可能输出序列)。有什么建议么?

0 投票
0 回答
3455 浏览

algorithm - 使用 HMM 前向算法处理下溢

我正在尝试为隐马尔可夫模型(HMM)实现前向算法,并且在填充 alpha 表时遇到了下溢问题。我使用此处第 6 节中描述的方法对 alpha 值进行了归一化,但现在最终 alpha 值(观察序列的概率)的总和始终等于 1。如何“撤消”归一化以获得实际概率?我的实现与此处的第 7.2 节非常相似。

最近对这个问题有一个答案,但我无法理解最后几个步骤,希望得到更详细的解释。谢谢!

更新:我想我终于理解了最近的答案,但希望能确认我的理解是正确的。这是我所做的(c[k] 是系数):

0 投票
1 回答
149 浏览

iphone - 为什么 NSDecimalNumber 10^-65 的平方会导致 10^126 而不是导致下溢异常?

所以这里是代码:

我希望程序以下溢异常终止,但事实并非如此。此外,取一个 NSLog 会给 number3 一个巨大的数字。如果我将“test”更改为低于 64 的任何值,它会给出正确的输出(即 10^(-2*test))。有谁知道这里发生了什么?我的意思是,这很容易解决,但除非我遗漏了某些东西(这很有可能),否则这似乎是 NSDecimalNumber 类中的错误。

0 投票
1 回答
9414 浏览

c++ - 双倍的溢出到负值吗?

嗨,我正在使用 g++ 编译器并且正在经历(我认为)是双打下溢,这可能吗?如果是的话,行为是如何定义的

我在这里上传了协方差矩阵 (51x51) 的 csv 格式:http: //pastebin.com/r0fx1qsx

这是我用来计算行列式的代码(在 c++ 中需要提升)(我已经切换到长双精度并且没有效果):

我为数据给出的结果是-3.59916e-183

当我运行以下matlab代码时:

如您所见,一个是(略微)积极的,而一个是(略微)消极的