问题标签 [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.
r - R中是否有数据类型“十进制”?
DECIMAL
我从 MySQL 表中读取以格式存储的数据。我想对 R 中的这些数字进行计算。
我曾经使用 将它们转换为数字表示as.numeric()
,但文档说:
numeric 与 double(和 real)相同。
但是 R 中还有数据类型 Decimal 吗?(没有舍入错误的数据类型,...)
这是一个关于舍入错误问题的简单示例:
php - PHP舍入问题
我遇到了一个四舍五入的问题,我有一个包含 3 个不同金额的慈善机构的数据库。然后在前面我有 3 个慈善机构根据分配给他们的金额显示百分比,总百分比总是需要增加到 100%。 . 目前,如果每个慈善机构都有 1 个分配给它,它会在每个慈善机构上显示 33%,这等于 99%,我需要以一种始终等于 100% 的方式欺骗它。
这是PHP
我为此找到了一个数学解决方案..但是..我的数学并不是那么好..但是..老实说,我不完全理解这一点:
非常感谢任何帮助..
excel - 使用 VBA 舍入到小数点后 2 位
我正在编写一个程序,按月(列)和人(行)汇总我输入的信息,但我遇到了舍入问题。我已经看到可以命名一个范围的其他地方,然后将该范围内的单元格格式化为四舍五入到小数点后 2 位,但我是 VBA 的新手,并且答案所写的伪代码不足以帮助我.
下面是我发现适合我的问题的答案的链接,但我在实现伪代码时遇到了麻烦。
rotation - 四元数瞬时数值漂移
我正在传播一个四元数,从用户鼠标输入中创建的变化很小,我为 X 轴上的添加旋转创建一个四元数,为 Y 轴创建一个四元数,并将这些旋转组合成一个四元数。我不断将这些更改添加(附加)到相机四元数中,因此创建了一个无 glimbal-lock 的相机(它仍然像疯了一样滚动:S)
当我开始旋转相机时,旋转矩阵开始缩放并失控倾斜。当我每帧标准化相机四元数时一切正常,但不应该需要标准化每一帧,对吧?如果这是数字漂移,那么它不会这么快就可见吗?
在这个问题中:四元数和归一化
大卫哈门发表了这条评论:
归一化是将四元数拖回单位 3 球体的杂项。四元数偏离流形的原因是因为欧拉步在某种意义上在数学上是无效的:单位四元数是一个群,而不是代数。不使用单位四元数也是无效的;现在您没有关于 so(3) 的图表。做对了(例如,李群积分技术),四元数几乎会留在流形上。您可能仍需要偶尔进行标准化
可能是因为我从欧拉旋转中创建了两个四元数,这就是我剧烈旋转错误的原因吗?
欧拉旋转产生的四元数是否应该在使用前进行归一化?
decimal - Excel 2003 不给我 1 个小数时
如果结果> 200,我放了一个“if”函数不给我小数,如果不给我1个小数。它很好用,除非结果的小数点是 .0,否则它不会显示我的小数点。如何强制显示小数?这是我的函数: =IF($E$13>200,ROUND($E$13,0),ROUND($E$13,1))
javascript - Javascript舍入失败
这是我们正在使用的舍入函数(取自 stackoverflow 关于如何舍入的答案)。它四舍五入到 2dp(默认情况下)
例如 2.185 应该转到 2.19
它运行良好,但现在我们在其中发现了一些错误(在 chrome 中和在 IIS 7.5 上作为 jscript 经典 asp 运行)。
例如:
有人知道吗:
- 为什么会发生这种情况。
- 我们如何在没有像这样的随机舍入错误的情况下将一半舍入到 2 dp。
更新:好的,问题的症结在于,在js中,625.185 * 100 = 62518.499999 我们怎样才能克服呢?
javascript - 测试 JavaScript 中的舍入错误
如何确定 JavaScript 中的数字是否太大(如果执行数学运算会导致舍入错误)。
例如,我有一个格式化百分比的函数。如果它无法正确格式化传入的值,我希望它完全按照传入的值返回值。
由于格式化如此巨大的数字是一种极端情况并且不是预期的,我宁愿只返回传入的数字。舍入错误开始之前的限制是什么,我将如何检查它们?
更新:
一个数字可以在不损失精度的情况下达到 JavaScript 的最高整数值是多少?表示精度最高可达 +/- 9007199254740992。我正在测试这是否是我需要检查的所有内容以安全失败并返回未修改的传入值。
matlab - Matlab:找到一个数字的最后一个非零数字的位置
我有一个pp
用数字填充的列向量,例如:
我想找到向量中最小的非零数字所占据的小数点右边的位数,在这种情况下是6
,因为4
in 3.123734
。然后我想将向量中的每个数字乘以 10^6,以消除向量中的所有小数。我想这样做以消除舍入错误。完成这项工作的最佳方法是什么?
c# - 将小数转换为双精度时的奇怪行为
将小数转换为双倍时遇到奇怪的问题。
以下代码返回 true:
但是,当我将其转换为 double 时,它会返回 false:
当我想使用 Math.Pow 并被迫将小数转换为双精度时,我遇到了这个问题,因为小数没有 Math.Pow 重载。
这是记录在案的行为吗?当我被迫将小数转换为双倍时,如何避免它?
来自 Visual Studio 的屏幕截图:
铸造 Math.Round 以使我翻倍以下结果:
更新
好的,我将问题重现如下:
- 当我运行 WPF 应用程序并在它启动后检查手表中的输出时,我就像在空项目上一样。
- 有一部分应用程序将值从滑块发送到计算算法。我得到错误的结果,我在计算方法上设置了断点。现在,当我检查监视窗口中的值时,我得到错误(没有任何修改,我只是刷新监视窗口)。
- 一旦我在一些较小的项目中重现该问题,我将在此处发布。
更新2
不幸的是,我无法在较小的项目中重现该问题。我认为埃里克的回答解释了原因。
fortran - 在fortran中快速向上/向下翻倍?
在 Fortran 中是否有快速向上/向下舍入的方法?
由于正双数的位表示的线性顺序,可以如下实现舍入。
pinf
并且ninf
是分别为 +/- 无穷大的全局常数
我觉得这不是最好的方法,因为它很慢,但它几乎只使用位操作。
另一种方法是使用乘法和一些 epsilon
eps = epsilon (1d0)
对于某些x
两个函数返回相同的结果 (1d0, 158d0),对于某些不返回 (0.1d0, 15d0)。
第一个函数更准确,但比第二个函数慢 3.6 倍(10^9 轮测试中 11.1 对 3.0 秒)
在不检查 NaN/Infinities 的情况下,第一个功能测试需要 8.5 秒 (-20%)。
我真的很难使用圆形功能,并且在程序配置文件中需要很多时间。是否有跨平台的方法可以更快地进行舍入而不丢失精度?
更新
这个问题怀疑当时的综述和四舍五入调用没有能力重新排序。我没有提到四舍五入以保持话题简短。
提示:第一个函数使用两个transfer
函数和一个加法。在第二种情况下,它比一次乘法和一次加法要慢。当它对数字的位没有任何作用时,为什么传输成本如此之高?是否可以用更快的函数替换传输或完全避免添加调用?