问题标签 [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.
ruby-on-rails-3 - Rails 3浮点舍入错误
运行红宝石 1.8.7。
(1.005 * 100).round 结果:100
(1.006 * 100).round 结果:101
100.5.round 结果:101
(1.005 * 100) 结果:100.5
这里发生了什么?有人可以在最新版本的 ruby 中试试这个吗?谢谢!
google-chrome - Chrome中SVG线性渐变的舍入错误?
我最近看到 Chrome 渲染 SVG 线性渐变的一些问题。看看下面这个 SVG:
在Chrome(我的版本是23.0.1271.64)中加载这个html后,很容易在peek中看到一个明显的2px线性渐变误差,左侧线段显示一些绿色。在 IE 9 和最新的 Firefox 中,svg 都可以正确呈现。我认为这可能是 Chrome 或 WebKit 的错误。有谁知道如何解决?谢谢!
c - c集成程序中的舍入错误
我正在制作一个程序,该程序针对不同的幂 n 值和常数 a 找到函数的积分。我的程序似乎工作正常,但我的结果中有一个小的舍入错误,我不知道为什么。我知道我有一个错误,因为我的一个朋友也在制作相同的程序,他的结果与我的略有不同,而且他绝对是正确的,因为在计算器上进行积分可以得到更接近他的值。下面是我的结果和他的 a=2 和 n=1。
他的结果:0.189070
我的结果:0.189053
我尝试了几乎所有我能想到的东西,但仍然无法弄清楚我从哪里得到错误,任何帮助指出我是个白痴的地方将不胜感激!:p
我的程序:
javascript - 从 Google Apps 脚本中的变量添加数字变得奇怪
添加我从 CSV 中提取的数字时,这是我得到的日志文件:
这是日志,直到第 3 天,我得到一个奇怪的舍入错误:
为什么会这样?
亲切的问候,瑞尔
c++ - std::cbrt 的舍入错误?
我想知道是否应该将以下内容报告为标准库的 gcc 实现中的错误。
对于所有无符号整数i
,如果我们与整数int(std::sqrt(i))
的实际平方根进行比较,转换总是会给出好的结果。如果我们对它做同样的std::cbrt
事情,情况并非如此:
您认为应该将其报告为缺陷吗?
ruby - 遇到 Ruby 舍入错误问题
我一生都无法弄清楚为什么 my:generate_receipt
方法54.9
在我的“进口餐盘项目”应该等于时返回54.65
。我编写了 RSpec 测试来确认数组确实返回了正确的值。
为什么它返回54.9
而不是返回54.65
?!这种围捕发生在哪里?如何让它返回正确的值?我难住了。
ruby - OS X 上 Ruby 的奇怪输出行为
我有一个用 Ruby 编写的简单程序。代码是:
我在装有 Mountain Lion 的 MacBook Air 上运行它。我的 Ruby 版本是:
我看到的奇怪行为是:
现在,如果我将 j 更改为 1.13,我会得到以下结果(为简洁起见,我删除了一些输出):
这里发生了什么?最初,我认为这可能与值如何存储在 j 中有关,并且 1.13 具有一些特殊属性。然而,从 1.13 开始的 j 颠覆了这一理论。真正让我感动的是,这似乎并不一致。换句话说,奇怪的“0000000000”在哪里发挥作用似乎有些武断(尽管我确定不是)。
更糟糕的是,如果我将“j < 2”更改为“j < 5”,我会得到更奇怪的行为。
我试过用谷歌搜索,但老实说,我不确定从哪里开始。我发现了一些线程,人们看到了 to_d 的奇怪行为,但没有什么能具体回答我的问题。此外,我对 Ruby 的了解还不够,无法完全理解发生了什么。这一定是精确度和 Ruby 如何存储数字的问题,但我不知道该去哪里找。
非常感谢任何朝着正确方向的推动!谢谢!
ruby - Ruby Time 中的舍入错误
编辑:它出现在 timev.h 中,亚秒表示为整数而不是浮点数?
即使我知道与 IEEE 754 浮点值的实现相关的舍入误差,我对此感到非常惊讶:
通常,逗号后的第 8 位或第 10 位会报告精度错误,我很理解为什么。但在这种情况下,我的值的最后一个有效数字受到影响,并且它似乎比其他众所周知的精度情况更严重。此外,这是 Time 类的一部分,我不知道有什么方法可以在程序中修复它。其他报告的舍入浮点错误有时可能会通过使用不同的类来修复,但在这种情况下,我看不到任何有趣的类可以使用。
我的环境:
编辑:所以,关于这个有两个问题:这是否是一个错误?如果我需要 Time 类的精确度,如何处理这种副作用?任何想法或解决方法?
java - 控制台和 JDBC 中的十进制截断/舍入差异
将双精度值插入具有小数精度的数据库表时遇到问题。我正在使用 MS SQL Server 版本 10.0.4000 下面是一个小数列有 4 个小数位的示例表。
当我通过 MSSQL 控制台插入值“36.78675”时,它会被四舍五入,36.7868
因为该字段只有 4 位小数。这可以。
但是当我通过我的 java 代码(MS SQL JDBC 驱动程序)执行等效插入(使用准备好的语句)时,数据存储在表中是36.7867
. 如果我有一个类似的值36.786750001
,控制台和 JDBC 都会舍入到36.7868
. 我使用的 java 对象是 double 的。我用双值调用 setDouble() 。在这里它会自动选择数据类型。但是还有另一种 JDBC 方法,它采用对象和数据类型。使用它,我用 DECIMAL 和 FLOAT 类型进行了测试。所有人都给出了相同的结果。我什至将 jdbc 驱动程序更改为 I-net。也有同样的结果。
有人知道为什么通过驱动程序进行舍入的工作方式不同吗?是否有任何设置使其表现得像控制台?
fortran - 如何计算任意高精度的数字?
我写了一个简单的fortran程序来计算高斯常数:
4 次迭代后的结果为 0.83462684167407308。无论如何使用算术几何平均方法获得更好的结果?人们如何计算诸如 pi、欧拉常数等数字的多位数字?每个无理数都有特定的算法吗?