问题标签 [inexact-arithmetic]

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 回答
2174 浏览

python - 在 Python 中生成两个文件的“模糊”差异,以及浮点数的近似比较

我有一个比较两个文件的问题。基本上,我想做的是两个文件之间的类 UNIX 差异,例如:

$ diff -u 左文件右文件

但是我的两个文件包含浮点数;并且因为这些文件是在不同的架构上生成的(但计算相同的东西),所以浮动值并不完全相同(它们可能相差 1e-10)。但是我通过“差异”文件寻求的是找到我认为有显着差异的内容(例如差异超过 1e-4);在使用 UNIX 命令 diff 时,我得到几乎所有包含浮动值的行都不同!那是我的问题:我怎样才能得到像 'diff -u' 提供的结果差异,但对浮动比较的限制较少?

我想我会写一个 Python 的脚本来做到这一点,并找到了模块 difflib,它提供了类似 diff 的比较。但是我找到的文档解释了如何按原样使用它(通过单一方法),并解释了内部对象,但我找不到任何关于如何自定义 difflib 对象以满足我的需求的信息(比如只重写比较方法或这样)......我想一个解决方案可能是检索统一的差异,并“手动”解析它以消除我的“错误”差异,这并不优雅;我更喜欢使用已经存在的框架。

那么,有人知道如何定制这个库,以便我可以做我想要的吗?或者至少为我指明了正确的方向......如果不是在 Python 中,也许 shell 脚本可以完成这项工作?

任何帮助将不胜感激!提前感谢您的回答!

0 投票
2 回答
2305 浏览

scheme - Scheme 函数 inexact->exact 是如何运作的?

SICP 中描述的 Scheme 程序如何inexact->exact运作?

0 投票
2 回答
455 浏览

scheme - 方案 - R5RS 数值塔中的“不精确”概念

在思考实现方案 R5RS 的方式时,我对 R5RS 的以下摘录(第 22-23 页)感到困惑:

(余数 -13 -4) ==> -1
(余数 -13 -4.0) ==> -1.0 ; 不准确

(lcm 32 -36) ==> 288
(lcm 32.0 -36) ==> 288.0 ; 不准确

(分母 (/ 6 4)) ==> 2
(分母 (精确->不精确 (/ 6 4))) ==> 2.0

我们是否应该明白,即使 -4.0、32.0 和 (exact->inexact (/6 4)) 不精确,实现也应“记住”它们的精确等价物(-4、32 和 3/2),以便继续整数除法,素因子分解等?

否则,实施如何成功地给出上述答案?

提前感谢您对这个主题的任何启发!:)

尼古拉斯

0 投票
4 回答
2625 浏览

c++ - 双 0.0 总是在便携式 C 中精确表示吗?

是否可以期望以下代码在具有符合 ANSI 的 C 编译器的所有环境中工作?

C++呢?

0 投票
2 回答
104 浏览

sql-server-2005 - SQL Server 算术转换结果

我只是在我整理的报告中查看一些非常小的差异,我很困惑 SQL Server 中用于投射的最佳实践是什么,如果有人可以指出正确的方向来解释我的内容我看到了。

使用与示例表中所示数据相似的当前计算,在少数情况下会出现非常小的 1p 误差@data

有人可以指出我正确的方向,或者至少告诉我我在看什么,以便我可以进一步研究?

下面的代码产生示例输出:

0 投票
2 回答
2529 浏览

c++ - 将浮点数除以 10

可能重复:
为什么十进制数不能用二进制精确表示?

我正在为 C++ 下的数学使用开发一个非常简单的算法。

而且我有一个名为“step”的浮点变量,每次我完成一个while循环,我需要将step除以10。

所以我的代码有点像这样,

在我愚蠢的简单逻辑中,结果很好。step 将除以 10,从 1 到 0.1,从 0.1 到 0.01。

但它没有,而是出现了 0.100000000001 之类的东西。我就像“这到底是什么”

有人可以帮我解决这个问题。这可能与我不完全理解的数据类型本身有关。因此,如果有人可以进一步解释,将不胜感激。

0 投票
2 回答
281 浏览

iphone - 从字符串重新解析后,DBL_MAX 失去了很大一部分精度

我在我的 iPhone 上运行这段代码:

...并获得此输出:

printf()为什么/序列atof()失去精度(我假设stringWithFormatprintf内部)?它不仅发生在 DBL_MAX 上,而且发生在每个非常大的数字上(即10000它按预期工作,因为DBL_MAX / 2它没有)。有没有办法避免它?

0 投票
1 回答
1119 浏览

matlab - 如何在 matlab 中获得 pi/4 等角度的 sin 和 cos 的精确值?

如果我用matlab写

我得到这个表格:

当我更希望获得 (2)^(1/2)/2 的实际值以更清楚地编写公式时。有没有办法按照我的要求做?

0 投票
1 回答
273 浏览

functional-programming - 为什么是 (max (sin (/ 5 3)) (sqr 12)) 在 Scheme/Dr. 球拍(初级学生语言)评估为不准确?

我正在阅读如何设计程序,在练习 2.1.1 中,我要:

找出 DrScheme 是否有平方数的运算;用于计算角度的正弦值;并用于确定两个数字的最大值。- 秒。2.2,前 2.1.1

我的代码是:

我运行程序时的结果是:

我对最后一个表达式感到困惑,它是#i0.9954079577517649and的最大值144。答案不应该是144还是144.0代替#i144.0

0 投票
1 回答
1757 浏览

math - 如何在 Clojure 中将任何数字转换为 clojure.lang.Ratio 类型?

在方案中我可以做到:

在 Clojure 中,我可以做类似的事情:

但在方案中我可以做到:

这在 Clojure 中是不可能的:

如何将 Double(或实际上任何类型的数字)转换为 clojure.lang.Ratio?

在 Scheme 中,我们inexact->exact在 Clojure 中也有类似“double to ratio”之类的东西,但我找不到类似的东西。