问题标签 [floating-point-precision]

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

c - 在 gmp 任意精度上计算机器精度

我正在尝试获取gmp变量的机器精度。

为此,我改编了来自wikipedia的代码,以计算具有固定精度的 gmp 的精度:

但是,结果与维基百科的公式不一致,也不会随着我设置的精度而变化。我错过了什么?我也尝试过使用 double 和 float (c 标准),结果是正确的......

0 投票
2 回答
268 浏览

java - roundToDecimals 返回的数字太多

我有一个返回浮点数的过程。然后我使用该roundToDecimals方法消除一些数字。

----2012 年 6 月 22 日更新:凌晨 1.42 点----

---更新结束

它运行良好,但如果最后一位为零,则返回小数点后 3 位以上

有谁知道如何处理这种问题?

0 投票
1 回答
1415 浏览

c++ - OpenCL 速度和浮点精度

我刚刚开始使用 OpenCL。但是,我发现 OpenCl 的一些奇怪行为,我无法理解。我构建和测试的源代码是http://www.codeproject.com/Articles/110685/Part-1-OpenCL-Portable-Parallelism。我有一个 ATI Radeon HD 4770 和一个 AMD Fx 6200 3.8 ghz 6 核 cpu。

速度

首先,速度与最大工作组项目的数量不成线性关系。我运行 App Profiler 来分析内核执行期间花费的时间。结果有点令人震惊,我的 GPU 每组只能处理 256 个工作项,用了 2.23008 毫秒来计算 5079040 个数字的平方。请注意,这是没有考虑内核加载时间...

但是,我的 cpu 每组可以处理 1024 个工作项,使用 13.41895 毫秒来计算数字。我认为工作组中的工作项是同时运行的,换句话说,cpu 应该更快。我想知道,工作组是否同时运行?就像,在我的设置中,GPU 会比 CPU 同时运行更多的工作组。

另一个因素可能是 GPU 计算浮点运算的速度更快,但我的 cpu 的时钟速度快了 4 倍,所以还是很奇怪。我知道通常 GPU 在屈服于 opencl 时应该更快,但我想要一个很好的解释为什么。

编辑:我尝试计算 1024、2048...5120 个工作项,现在 cpu 比 GPU 快。所以我了解到 CPU 在工作时间少的情况下工作得更好,而 GPU 在工作项目很多时效果最好。

我还看到,我的 CPU 在工作组大小(4096、6144、8192)的三倍时计算速度要慢得多。所以看起来我的 CPU 同时占用了三个工作组。

浮点精度

问题移至此处: OpenCL 浮点精度

提前感谢所有答案。

0 投票
1 回答
1564 浏览

matlab - 如何将指数值(1.3e12)和正常值(1.3)存储在matlab的同一矩阵中?

我有一个文件,其中包含从 0.1 到 1.3e12 的值。我一直在尝试将它存储在同一个数组中,但它不起作用。有人可以帮忙吗?

0 投票
1 回答
955 浏览

matlab - 相同的矩阵运算在 Matlab 中返回不同的结果

我在使用 Matlab 时遇到了一点问题,我认为这与 Matlab 的精度有关,但我真的很想解决这个问题。我有三个矩阵,一个f以 296x3118 的尺寸调用,另一个mapping.mean以 1x3118 的尺寸调用,最后一个mapping.M以 3118x100 的尺寸调用。
以下操作的结果应该是 1,但不是。生成的矩阵f_s_1f_s_2具有仅在 10^-12 范围内不同的值。有谁知道为什么,或者如何解决这个问题?

0 投票
0 回答
120 浏览

linear-algebra - gcc 2.95 浮点线性代数与 gcc 4.3.2 不匹配

我正在编译使用线性代数计算色谱的遗留代码。矩阵使用 float 作为类型,所有计算都使用 float。当我们使用旧的编译器(turbo-linux gcc 2.95)时,我们会得到一个答案。当我使用我们的新编译器(SuSE gcc 4.3.2)时,我们会得到不同的光谱。

我需要获取使用新编译器编译的同一程序的输出,以匹配使用旧编译器的输出。

我试过使用这些编译器选项: g++ -g -lstdc++ -mfpmath=no-sse -mno-sse -mno-sse2 -ffloat-store -mieee-fp

这个代码:

这些都不能使色谱匹配。

那么问题是......是否有灵丹妙药可以使从两个不同编译器编译的代码产生的色谱相匹配?我希望浮点控制宽度(上面的 flpcw)是解决方案,但事实并非如此。(注意,代码太复杂,无法发布,)。

PS上面代码的结果是:gcc 2.95浮点控制字是:0x37f浮点控制字现在是0x27f。

gcc 4.3.2 浮点控制字是:0x37f 浮点控制字现在是 0x27f。

0 投票
1 回答
20460 浏览

c - epsilon 用于各种浮点值

有一个FLT_MIN最接近于零的常数。如何最接近some number价值?

举个例子:

我更喜欢不使用特殊函数的数字公式。

0 投票
3 回答
35904 浏览

ios - 如何安全地将 CGFloat 设置为 int?

我经常需要将 a 设置为 a 或 ceilCGFloatint计算数组索引。

我永久看到的问题floorf(theCGFloat)orceilf(theCGFloat)可能存在浮点不准确的问题。

那么如果 my CGFloatis2.0f但在内部它被表示为1.999999999999f或类似的东西怎么办。我做得到floorf1.0f这又是一个浮动。然而,我必须将这个野兽转换为 int,这可能会引入另一个问题。

是否有最佳实践如何将 a 放置或放置到float某个位置,以int使类似的东西2.0永远不会意外地落地,1而类似的东西2.0永远不会意外地放置在天花板上2

0 投票
0 回答
150 浏览

c++ - C ++将精度提高到双精度以上

可能重复:
是否有与 Java 的 BigDecimal 等效的 C++?

我最近发布了关于我正在制作的一个 C++ Pi 近似程序。你可以在这里找到代码:C++ Pi approximation program但代码本身并不真正相关。只知道我需要做算术,包括所涉及数字的幂。

现在程序运行良好,但我在徘徊是否有可能以某种方式(可能使用自定义数据类型)将精度提高到 double 提供的微不足道的 15 位小数,因为程序可以在更少的时间内将 Pi 精确到小数点后 15 位超过一秒。

任何帮助表示赞赏。

0 投票
4 回答
1862 浏览

c++ - 了解浮点精度

是不是这样:

  1. 可表示的浮点值在接近零的实数线上最密集?
  2. 随着数轴远离零,可表示的浮点值变得越来越稀疏(指数?)?
  3. 如果以上两个都是真的,那是否意味着离零更远的精度更低?

总体问题:精度是否以某种方式指代或取决于您可以(准确地)表示的数字密度?