问题标签 [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 投票
2 回答
302 浏览

sql-server-2005 - 2005 年和 2000 年的 SQL 舍入问题

我在数据库中有一个值为 2.700000002 的值。当我在 SQL SERVER 2005 的 Management Studio 中运行查询时,我得到 2.7。但是当我在 SQL SERVER 2000 查询分析器中运行时,它会出现 2.700000002。

2.70000002 是正确的 为什么 SQL SERVER 2005 试图通过舍入或选择底值来更改该值?

0 投票
2 回答
1492 浏览

floating-point - 为什么 99.99 / 100 = 0.9998999999999999

可能重复:
处理浮点数的准确性问题

而 99.99 * 0.01 = 0.99

显然这是古老的浮点舍入问题,但是在这种情况下的舍入误差对我来说似乎相当大;我的意思是我可能期望得到 0.99990000001 或类似的“接近”结果。

作为记录,我在 JavaVM 和 .Net 环境中得到了相同的答案。

0 投票
1 回答
663 浏览

c# - 使用小数估计计算误差

我们目前正在使用 System.Decimals 来表示我们正在开发的 .NET 应用程序中的数字。我知道小数的设计是为了最大限度地减少因四舍五入引起的误差,但我也知道某些数字(例如 1/3)不能表示为小数,因此某些计算会有小的舍入误差。我相信这个错误的大小将非常小且微不足道,但是一位同事不同意。因此,我希望能够估计由于我们的应用程序中的舍入而导致的误差的数量级。例如,我们正在计算“交易”的运行总数,每天将执行大约 10,000 个“交易”,并且大约有 5-10 次小数运算(add、sub、div、mul 等)来计算运行总数收到的每笔交易的新运行总计,圆形误差的巨头的顺序是什么?一个带有计算程序的答案也很好,所以我将来可以学习如何为自己做这个。

0 投票
4 回答
5062 浏览

c++ - 从双精度转换为浮点时检测精度损失

我正在编写一段代码,我必须在其中将双精度值转换为浮点值。我正在使用 boost::numeric_cast 进行此转换,这将提醒我任何溢出/下溢。但是我也有兴趣知道这种转换是否会导致一些精度损失。

例如

生成 dest,其值为 1988.1

有什么方法可以检测到这种精度损失/舍入

0 投票
2 回答
3714 浏览

sql-server - 为什么这个 Sql Server CAST(..) 将 Decimal 舍入为 VarChar?

我正在尝试将一些转换decimalsvarchar,但它们正在变得四舍五入

有人能告诉我为什么吗?

注意:是的,我知道我的纬度/经度是错误的。我很快就会换掉它们。

0 投票
1 回答
858 浏览

c# - 在 convert.tosingle 方法中避免舍入

考虑 ,

但是当我打印 f 的值时,我得到 1.123455。

它正在四舍五入。另外问题是我无法更改代码中浮点数的数据类型。请帮忙。

0 投票
3 回答
2505 浏览

algorithm - 有效减少重复操作带来的舍入误差的影响

我最近刚刚遇到了用于最小化舍入的 Kahan(或补偿)求和算法,我想知道是否有用于除法和/或乘法以及减法的等效算法(如果碰巧有,我知道关于关联性)。任何语言、伪代码或链接的实现示例都很棒!

谢谢

0 投票
5 回答
31693 浏览

rounding - 舍入标准 - 财务计算

我很好奇在计算财务数据时是否存在任何“舍入”标准。我最初的想法是仅在将数据呈现给用户(表示层)时才进行舍入。

如果“四舍五入”数据随后用于进一步计算,应该使用“四舍五入”数字还是“原始”数字?有人有建议吗?

请注意,我知道不同的舍入方法,即银行家舍入等。

0 投票
2 回答
826 浏览

sql-server - 转换 XML 时的 FP 精度错误 -> 表和处理它

在 SQL Server 2008 中,我在 XML 属性中有值“0.01”。使用 OPENXML,我将 XML 分解成一个临时表。如果适用列的类型为 real(单精度),则在表中显示为 0.01。好的。但是,如果精度是浮点数(双精度),则结果为 0.00999999977648258。这是没有意义的。为什么要这样做?

我的下一个问题是,无论临时表中的值如何表示,当我对其运行聚合函数时,它总是返回为 0.00999999977648258。这会导致验证错误:程序报告输入太小(< 0.01),这是不正确的。

任何想法为什么会发生这些舍入错误以及如何克服它们?

已经尝试过:使列成为 varchar。

编辑2:

根据答案,我理解问题是由于 IEEE 数字不能准确表示 0.01。因此我的下一个问题:

“WHERE {computed} < 0.01”,为什么 0.01 也没有在这里四舍五入?如果是,方程将按预期计算(即 0.00999999977648258 不小于 0.00999999977648258)

编辑:显示的示例代码

此代码将产生错误。将指示的浮点数更改为实数,错误“消失”。至少就临时表而言。

0 投票
4 回答
3370 浏览

c++ - sprintf 中基于 Windows 和 Unix 的系统的舍入差异

我在基于 UNIX 的系统上遇到问题 sprintf 没有正确四舍五入值。

例如

那是 88,888,888,888,885.875 只是为了让眼睛更容易。我给出了这样一个具体而大的例子,因为它似乎适用于较小的数字。

我正在尝试以下列方式使用它

在 Windows 上,这会导致:

例如在 AIX 上,但也在 Linux 中显示:

为什么会这样?任何想法以及如何使其在 Win/Unix 上的行为方式相同

谢谢