问题标签 [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 回答
298 浏览

c# - 如何“附加”有效数字以从浮点值加倍

目前我正在尝试匹配 C# 和 C++ 应用程序。在 C++ 方面,当有一个值时,说:

当我使用sscanf

x将等于554.13269,即它具有“附加”有效数字,即使它们可能四舍五入到相同的值。(我认为这个应用程序使用了一种不同的float类型,它可以容纳超过 7 个有效数字。)

我不想改变 C++ 方面。我希望我单独的 C# 应用程序也能这样做。

例如,如果我有 float 23423.29,我想将其转换为23423.289,这是 a double(因为在 C# 中,标准float的有效数字不超过 7 个),然后将其double转换为字符串。

我似乎找不到一种方法来做到这一点。有任何想法吗?还是我必须创建自己的函数或从 C# 端调用相同的 C++ 函数……?

0 投票
2 回答
1129 浏览

c - 如何将浮点输入转换为整数并保持最大精度?

我必须使用一种算法,它需要一个整数矩阵作为输入。我拥有的输入是真正有价值的,因此我想在将输入传递给算法之前将其转换为整数。

我虽然将输入缩放一个大常数,然后将其四舍五入为整数。这看起来是一个很好的解决方案,但是如何决定使用一个好的常量,特别是因为浮点输入的范围可能因情况而异?也欢迎任何其他想法?

0 投票
3 回答
1108 浏览

c# - 浮点运算歧义

可能重复:
为什么 C# 中的浮点运算不精确?

为什么浮点运算存在偏差?有什么具体原因吗?输出:160 139

0 投票
1 回答
2018 浏览

java - 浮点精度:JDBC、double 和 DECIMAL,如何避免丢失?

我正在使用 JDBC 接口从 DB2 数据库中复制一些行。我担心的是:有些列被定义为 DECIMAL 15。在 DB2 内部,这些列存储为二进制编码的十进制。在 Java 中通过双精度变量复制这些可能会丢失一些精度。由于该程序将在银行中运行,因此这肯定是一个问题。

处理它的最佳方法是什么?

0 投票
1 回答
348 浏览

serialization - 序列化浮点数

我正在搜索几个论坛以获取有关如何序列化浮点数的一些想法,并且碰巧遇到了以下代码。

我不明白为什么我们需要这样做

frexp() 将返回一个介于 0.5(包括)和 1(不包括)之间的值。

例如: frexp() 返回 0.81

ldexp( 0.81, 24 ) --> 19.44 并且当分配给 unit_32 时,它将被截断。

我看不出这背后的逻辑。有人可以为我澄清一下吗?

0 投票
1 回答
9942 浏览

floating-point - IEEE 24 位浮点数的最小正值是多少?

IEEE-754 32 位浮点数的最小正值是2^−14916 位浮点数是2^-14如果 IEEE-754 标准化了 24 位浮点数,它的最小正值是多少?

对不起,如果这在某处明确记录,但我无法在搜索中找到它。

如果您想了解实用性,这将用于将四个不同精度的浮点值拟合到 64 位中,以便在内存不足的系统中使用。

0 投票
1 回答
5074 浏览

c++ - /fp:strict 和 /fp:precise 之间的区别?

什么时候使用 fp:strict 而不是 fp:precise?如果我想要“更精确”的计算并避免舍入错误,使用前者会更好吗?使用其中任何一种的启发式方法是什么?

0 投票
1 回答
113 浏览

.net - 基于小数的复杂结构;一个好主意?

今晚我很想回家,使用 Mandelbrot/Julia 分形发生器。这是我之前在 C++ 中进行的一个项目,但这次我将在 C# 中试一试,这样我就可以更轻松地将其制作为 WinForms 应用程序,使用多线程生成图像等。

然而,我考虑使用但看起来可能最终会成为拐杖的一件事是内置的 Complex 结构。乍一看,看起来很棒;我需要的所有操作都内置到一个结构中。但是,仔细观察会发现该结构使用双精度数。双打只有 15-16 sig figs;他们的力量是他们的范围。我只对复平面上 (-2,-2) 到 (2,2) 的范围感兴趣,所以我对范围不感兴趣;精度。小数有 28 位有效数字。

因此问题;去这里的路是什么?

  1. 使用内置的 Complex 类型;毕竟这只是一个附带项目。
  2. 使用小数而不是双精度数滚动我自己的 DecimalComplex 类型。似乎是一条不错的“中间道路”;我需要的数学并不难(乘法和加法),它几乎可以使可用精度翻倍。
  3. 孤注一掷; 实现一个 BigDecimal,利用 BigInteger 并自己跟踪小数位,并将其用于 UberComplex 结构。IIRC 上次我搞砸这个时,我使用了类似的想法,但使用了无符号的 64 位长,这让我达到了一个缩放级别,如果整个集合以 360dpi 绘制,它需要一个大致区域的表面的太阳系。我可能会做得比这更好。
0 投票
1 回答
146 浏览

floating-point - Is this a visual representation of round-off errors in IEEE math

In Wolfram Alpha:

Round-off

Is this how round off errors appear in solutions when subtraction operand orders of magnitude differ more than 2^24 (32-bit float) ?

Link: Equation Plot

Link: What Every Computer Scientist Should Know About Floating-Point Arithmetic

0 投票
4 回答
263 浏览

c++ - 在 C++ 中对浮点变量执行算术运算时是否总是需要使用浮点文字?

我看到很多 C++ 代码具有如下行:

这些.0f文字之后的这些真的有必要吗?如果省略这些,您会失去数字准确性吗?

我认为只有当你有这样的一行时才需要它们:

你应该在哪里使用1.0f,对吧?