问题标签 [rounding-error]

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 投票
1 回答
40 浏览

matlab - 如何确定哪个公式会出现哪种类型的错误

如果 x 通常是一个小数(<0.00001),这些公式中的哪一个会出现舍入误差,哪些会出现截断误差?

我认为第一个是舍入误差,但第二个是什么?

0 投票
1 回答
2943 浏览

sql - 避免 SSRS 中小值的舍入错误

使用 SQL Server Reporting Services,如果数据库中的值为零,则以下格式表达式将其转换为 --- 正确到小数点后 2 位:

,0.00;(#,0.00);'---'

但是,如果值为 0.001,并且报告需要显示为 2 位小数(即应显示 0.00),则结果格式 --- 仍会显示在报告中。

有没有办法避免 SSRS 中的这些舍入问题,如果是这样,新的格式/功能/等会是什么?对于 0.001,结果应该是 0.00。

0 投票
1 回答
165 浏览

python - Python关于舍入的奇怪行为

问题很简单,为什么会这样:

我知道它必须与浮点舍入错误有关,但我需要一个正式的解释,我们如何避免这种错误?

P / s:我使用python 2.7.3,MacOSX,64位

0 投票
2 回答
1576 浏览

c# - 累积十进制类型的错误?

我有一个应用程序,我在其中累积十进制值(加法和减法)。我使用十进制类型而不是双精度以避免累积错误。但是,我遇到了一种行为与我所期望的不太一样的情况。

我有 x = a + b,其中 a = 487.5M 和 b = 433.33333333333333333333333335M。

计算加法,我得到 x = 920.8333333333333333333333334M。

然后我有 y = 967.8750000000000000000000001M。

我想断言 y - x = y - a - b。然而,

y - x = 47.0416666666666666666666667

y - a - b = 47.04166666666666666666666675

我认为这种错误正是十进制类型要避免的,那么这里发生了什么?

这是重现该问题的代码:


评论中有一些关于为什么这些高精度是必要的讨论,所以我想我会在这里总结一下。出于显示目的,我当然会对这些操作的结果进行四舍五入,但我对所有内部表示都使用十进制。一些计算沿途采用分数,这导致数字超出小数类型的精度。

但是,我会注意保持一切稳定以进行积累。因此,例如,如果我将一个数量分成三分之三,我取 x/3、x/3,然后是 (x - x/3 - x/3)。这是一个计算物理量的系统,这些物理量经常像这样被分割,所以我不想过早地通过四舍五入来引入偏差。例如,如果我将上面 x=1 的结果四舍五入到小数点后三位,我将得到 0.333、0.333、0.334 作为操作的三个部分。

系统可以做的事情的精确度存在实际的物理限制,但它试图做的事情的逻辑计算应该尽可能保持精确。主要的关键要求是系统的总量不应因这些不同的操作而改变。在上述情况下,我发现 decimal 可能违反此假设,因此我想更好地了解为什么会发生这种情况以及如何解决它。

0 投票
1 回答
130 浏览

c++ - Why is the answer for small numbers wrong? with MPIR

I'm using MPIR to deal with extremely small numbers. Somehow the answers I'm getting are wrong, and I have no idea why (something with rounding I guess..). How does rounding work in MPIR, and is it the reason for me getting these wrong answers?

Here is the code (the relevant part):

And here is the output for some values of p[i] and probLessThanR:

All the answers of 1-(1-p[i])^a-probLessThanR should be positive. I prefer positive and less accurate than negative (but accuracy is really important).

Any Ideas?

Edit: added the output as a text and the value of a. BTW, a is long long for a reason (it can have bigger values).

0 投票
2 回答
1130 浏览

.net - 除以 2 位小数点而不四舍五入结果

我对我正在开发的程序的结果有疑问。

例如,如果我有一个数字 8672.59,我想把它分成 2,结果应该是 4336.295。问题是如何将其转换为 2 位小数点并四舍五入结果,以便在添加 2 个数字时仍然可以得到正确的数量..

例子。

8672.59 / 2 = 4336.295

如果四舍五入为 2 位小数点,则结果为4336.30

我如何将其转换为 2 位小数点而不四舍五入,这样如果将其乘以 2,结果将与8672.59而不是8672.60相同

谢谢你!

0 投票
1 回答
80 浏览

sorting - Fortran90 程序似乎在未经我允许的情况下对数字进行四舍五入,并且弄乱了我的输出

我正在编写一个 Fortran90 程序,该程序将获取一个包含要绘制的点的输入文件,对这些点进行排序,计算最小和最大 x 和 y 值,将所有这些打印到另一个文件,然后创建一个图形并打印出来。

到目前为止,我正在计算最小值和最大值,并且我已经将它们全部打印到一个文件中。
程序的结构是这样的:

Please enter an input file:

GRAPH3.txt

Please enter an output file:

output.txt

然后它会从 GRAPH3.txt 中提取数据,做一些事情,然后打印出来。

GRAPH3.txt 看起来像这样:

第一个数字表示有多少点。其余的只是数字对。

当我运行我的程序时,这是我的输出:

显然,ymin应该是1.00,但它显示在0.00。你知道它为什么会这样做吗?

这是我的程序:

我发现的另一个问题是,如果我从 sort 子例程中删除 write 语句,由于某种原因,程序根本不会排序。任何线索为什么会这样做?

0 投票
5 回答
301 浏览

c# - 双重和四舍五入非常难,但这太疯狂了

太棒了,这意味着 135.24 不能用双精度表示,对吧?

0 投票
1 回答
227 浏览

ruby - Ruby浮点数减法错误?

谁能解释为什么下面的 Ruby 例程给了我 2.0 的结果?我认为四舍五入是错误的根源。

同样的错误?

我正在运行 Ruby 1.9.3p448 (2013-06-27) [i386-mingw32]。

0 投票
4 回答
4142 浏览

asp-classic - ASP 中的舍入错误 (vbscript)

我对 ASP 或 Vb 脚本知之甚少。我正在尝试解决一个错误,在该错误中,以经典 ASP 编写的过程意外四舍五入为更小的奇数。

据我了解, Round() 应该“四舍五入”。由于 720 * 51 / 160 = 229.5,Round(720 * 51 / 160, 0) 应该等于 230。但是,ASP 页始终返回 229。

实际的 ASP 代码复制如下。本例中的变量如下:

感谢您提供的任何帮助。

谢谢你。