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

python - Python 小数

我希望0.5四舍五入1。任何人都可以解释为什么它会向下取0整吗?

0 投票
3 回答
1697 浏览

java - 在 Java 中组合区域时舍入不准确?

我正在使用AreasJava。

我的测试程序随机绘制三个三角形并将它们组合成一个或多个多边形。将Areas它们.add()结合在一起后,我用它PathIterator来追踪边缘。

然而,有时,这些Area对象不会按应有的方式组合......正如您在我发布的最后一张图片中看到的那样,将绘制额外的边缘。

认为这个问题是由 JavaArea类中的舍入不准确引起的(当我调试测试程序时,Area显示了使用之前的差距PathIterator),但我认为 Java 没有提供任何其他组合形状的方法。

有什么解决办法吗?

示例代码和图像:

成功案例:

成功

一个失败的案例:

失败

0 投票
1 回答
934 浏览

mongodb - 使用 Group() 在 MongoDB 中出现双舍入错误

我是 MongoDB 的新手并尝试了一些基础知识,但这让我感到惊讶。我猜我误解了一些核心概念,但谁能告诉我这里发生了什么?

使用官方 MongoDB C# 驱动器,我已将 10,0000 个这些文档插入到名为“lots”的数据库集合中。

我在 shell 中尝试了这个,因为我不相信我在 C# 驱动程序中看到的内容,但结果是一样的;

db.lots.group({key:{"glossary.GlossDiv.title":true}, reduce:function(obj,out){out.total+=obj.glossary.GlossDiv.price;}, 初始值:{total:0 } }) [ { "glossary.GlossDiv.title" : "S", "total" : 299899.99999995757 } ]

如果我错了,请纠正我,但不应该 29.99*10000 == 299900吗?

0 投票
4 回答
4760 浏览

r - 以毫秒为单位的 R 问题

鉴于 R 下舍入毫秒的以下问题。我如何解决它以使时间正确?

我注意到这个 URL 提供了背景信息,但没有解决我的问题: Milliseconds puzzle when calling strptime in R

此 URL 也涉及该问题但没有解决它:R xts: .001 毫秒 in index

在这些情况下,我确实看到以下内容:

该 URL 似乎也表明这只是一个显示问题,但我注意到使用"%OS3"没有选项行的语句似乎无法获取正确的位数。

我使用的版本是 Windows 下的 32 位 2.15.0,但这似乎在 R 的其他情况下存在。

请注意,我的原始数据是 CSV 文件中的这些日期时间字符串,我必须找到一种方法将它们从字符串转换为正确的毫秒时间。

0 投票
2 回答
785 浏览

php - 用除法校正总和,消除舍入误差

使用 PHP 编码并带有 MySQL 数据库的 Web 应用程序。

我有一个系统,可以在分摊成本时计算许多人的不同成本。例如, A 人以 10 元的价格购买某样东西,B、C 和 D人应该分摊成本。

因此,系统应为A 人登记 10 人的正面记录,为B、C 和 D登记 10/3 的负面记录。

但是,当这完成时;B、C 和 D在四舍五入后都有 -3.33。当然,哪一个不等于10。解决这个问题的最佳方法是什么?一个最佳的解决方案也会随机化人们得到的稍微大一点的成本。

一种可能的解决方案是,如果我只是让最后一个人的债务为10 - (A + B),但如果四个人分摊例如 13.34 的成本,就会出现问题。不同的部分将是 3.34、3.34、3.34 和 3.32,而最佳分割将是 3.34、3.34、3.33、3.33。

有些人可能会争辩说,如果有足够的小数,这只是在有大量行时才会出现的问题。但是在一个经济的系统中,我认为从一开始就拥有一个故障安全系统是很重要的。它需要具有可扩展性,并且不能有任何错误。不公平是可以的,只是没有错误。

类似问题:和除值问题(处理舍入误差)

0 投票
3 回答
5039 浏览

java - BigDecimal 乘以零

我正在使用 BigDecimal 执行简单的乘法运算,并且在乘以零时发现了一些奇怪的行为(在此用例中乘以零是正确的)。

基本数学告诉我,任何乘以零都将等于零(请参阅:零乘积属性乘法属性

但是,以下代码将始终失败并出现相同的错误:

这是 BigDecimal 的不准确之处,还是我在某处遗漏了一些特定的数学分支?

注意:在 IntelliJ 11 中运行的 JDK 1.6.0_27

0 投票
1 回答
6263 浏览

excel - 会计格式有时显示 $0.00 和 $ - 其他

我在 Excel 中有一个数据透视表,项目的总和应为零。相反,我得到的数字非常非常接近于零(-3.63797880709171E-12)。正如@Tim Williams 在他的评论中指出的那样,这是十进制 <--> 二进制浮点转换的已知工件。

我主要关心的是结果的格式。我正在尝试应用一种会计格式,其中 $0 显示$ -而不是$0.00. 格式很重要,$ -因为它允许您在比较数字集时一目了然并查看哪些列“平局”。当一些零显示为$0.00而其他零显示为时,$ -这要困难得多。

例如,

我希望所有三个公式的结果都显示为$ -. 有没有办法强迫这种情况发生?也许有一种方法可以强制数据透视表中的总和四舍五入到最接近的一美分(即百分之一)?

0 投票
3 回答
9290 浏览

java - Math.round() 无法正常工作

这是我的程序。非常简单地说,它应该将输入的数字四舍五入到给定的小数位数。即 4.245 四舍五入到 2 位小数将得到 4.25。但是,我总是只把它四舍五入到一个整数后面......为什么?让我感到困惑的是,我在 android 中使用了相同的代码,而且它完美无缺

这是我的android类的片段

0 投票
3 回答
198 浏览

php - 不准确的计算(四舍五入?) - PHP

编辑:问题已解决

我正在尝试移植一种流行的评分算法,该算法将 Counter-Strike 比赛中的一些统计数据分析到 PHP 脚本中。该系统的概要可以在下面的链接中找到(新闻帖子的底部): http ://www.hltv.org/?pageid=242&eventid=0

无论如何,所以我已经在 PHP 中设置了所有内容,并且我有理由确定一切都是正确的。为了计算的目的,假设:

这是我的代码:

问题是 $killRating、$survivalRating 和 $roundsWithMultipleKillsRating 在 PHP 脚本中似乎总是返回 1,而如果我自己手动计算它们,它们是不同的。例如,如果我自己计算 $killRating,我得到 1.5789 等,但 PHP 返回“1”。

我该怎么做才能解决这个问题?

非常感谢。

0 投票
2 回答
2100 浏览

c++ - 旋转图像会导致 Qt 失真

我在 Qt 中旋转图像时遇到了一些问题。每次我用QPainter旋转我的图像时,它都会变得越来越扭曲。这是初始图像:

http://imageshack.us/photo/my-images/838/ship1.png/

经过一些迭代,它变成:

http://imageshack.us/photo/my-images/11/ship2e.png/

这是我的代码:

对我来说,Qt 保留了图像质量。这种行为完全奇怪。有原因吗?