问题标签 [floating-point]

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 投票
3 回答
4901 浏览

binary - 浮点十六进制八进制二进制

我正在开发一个计算器,它允许您以八进制、十六进制、二进制,当然还有十进制执行小数点后的计算。尽管找到一种将浮点十进制数转换为浮点十六进制、八进制、二进制(反之亦然)的方法,但我遇到了麻烦。

计划是以十进制进行所有数学运算,然后将结果转换为适当的数字系统。任何帮助、想法或示例将不胜感激。

谢谢!

0 投票
5 回答
5710 浏览

language-agnostic - 我们是否应该将浮点数的相等性与 *relative* 错误进行比较?

到目前为止,我已经看到很多关于浮点数相等的帖子。像“我们应该如何确定 x 和 y 是否相等?”这样的问题的标准答案。是

其中 epsilon 是一个固定的小常数。这是因为“操作数”x 和 y 通常是一些涉及舍入误差的计算的结果,因此标准相等运算符 == 不是我们的意思,我们真正应该问的是 x 和 y 是否接近, 不相等。

现在,我觉得如果 x 与 y “几乎相等”,那么 x*10^20 也应该与 y*10^20 “几乎相等”,因为相对误差应该是相同的(但“相对“对什么?)。但是对于这些大数字,上述测试将失败,即该解决方案不会“扩展”。

你会如何处理这个问题?我们应该重新调整数字还是重新调整 epsilon?如何?(还是我的直觉错了?)

这是一个相关的问题,但我不喜欢它接受的答案,因为 reinterpret_cast 事情对我来说似乎有点棘手,我不明白发生了什么。请尝试提供一个简单的测试。

0 投票
10 回答
5787 浏览

c# - 浮点不准确性的确定性如何?

我知道浮点计算存在准确性问题,并且有很多问题可以解释原因。我的问题是,如果我两次运行相同的计算,我是否可以始终依靠它来产生相同的结果?哪些因素可能会影响这一点?

  • 计算之间的时间?
  • CPU的当前状态?
  • 不同的硬件?
  • 语言/平台/操作系统?
  • 太阳耀斑?

我有一个简单的物理模拟,并想记录会话,以便可以重播。如果可以依赖计算,那么我应该只需要记录初始状态以及任何用户输入,并且我应该总是能够准确地重现最终状态。如果计算不准确,开始时的错误可能会在模拟结束时产生巨大影响。

我目前在 Silverlight 工作,但很想知道这个问题是否可以得到普遍回答。

更新: 最初的答案表明是的,但显然这并不完全明确,正如所选答案的评论中所讨论的那样。看来我将不得不做一些测试,看看会发生什么。

0 投票
10 回答
103522 浏览

.net - 截断十进制数不四舍五入

可能重复:
c# - 如何将十进制值四舍五入到小数点后 2 位(用于页面上的输出)

我想像下面这样截断小数

IE

  • 2.22939393 -> 2.229
  • 2.22977777 -> 2.229
0 投票
5 回答
67578 浏览

oracle - Oracle 浮点数与数字

我在Oracles 文档中看到相互冲突的引用。小数如何存储在 FLOAT 和数据库中的 NUMBER 类型之间有什么区别吗?

正如我从 C 等人中回忆的那样,浮点数具有 int 没有的精度限制。Rg,对于“浮点数”,0.1(以 10 为底)近似为 0.110011001100110011001101(以 2 为底),大致等于 0.100000001490116119384765625(以 10 为底)。然而,对于 'int's,5(Base 10) 正好是 101(Base 2)。

这就是为什么以下内容不会在 C 中按预期终止的原因:

但是,我在 Oracle 文档的其他地方看到FLOAT 已被定义为 NUMBER。据我了解,Oracle 对 NUMBER 类型的实现并没有遇到与 C 的浮点数相同的问题。

那么,这里的真实故事是什么?Oracle 是否偏离了我对浮点数/浮点数的预期?

(我敢肯定,对于我将使用它们的用途而言,这是一场巨大的飓风,但我知道如果 0.1*10 等于 1.00000000000000001,我会有疑问)

0 投票
4 回答
6370 浏览

c++ - 浮点数或双倍特殊值

我有可能是“空”的双(或浮点)变量,因为没有有效值。如何使用内置类型 float 和 double 来表示这种情况?

一种选择是具有浮点数和布尔值的包装器,但这不起作用,因为我的库有存储双精度数的容器,而不是表现为双精度数的对象。另一个将使用 NaN (std::numeric_limits)。但我看不出有什么方法可以检查变量是否为 NaN。

如何解决需要“特殊”浮点值来表示数字以外的东西的问题?

0 投票
3 回答
8576 浏览

c++ - 从浮点数中提取单个数字

我整天都在敲这个头。我目前正在处理的 C++ 项目需要显示可编辑的值。当前选择的数字显示该数字上方的递增值和下方的递减值。能够将可编辑值作为数字和数字集合引用是很有用的。如果有某种可索引形式的浮点数,那就太棒了,但我一直找不到这样的解决方案。我把这个问题扔在那里,看看是否有明显的我遗漏的东西,或者我是否应该自己动手。


感谢您的建议!我希望有一个不会从 float -> string -> int 转换的解决方案,但我认为这是摆脱浮点量化问题的最佳方法。我最终选择了 boost::format 并仅引用了字符串的各个字符。与使用 modf 和 fmod 的组合尝试从浮点数中获取数字相比,我看不出这是一个巨大的性能差异(它可能只是在幕后做的,只比我的实现更强大)。

0 投票
5 回答
2445 浏览

.net - 对于这个简单的数学结果,我应该使用十进制、浮点还是双精度?

我正在做一些非常简单的数学运算并将结果保存到 MS SQL2008 DB。

我正在平均一些数字,它们是 1<->5 之间的字节值。我希望只记录小数点后 2 位。我不关心小数点后第二位的四舍五入(例如 1.155 == 1.5 或 1.6 .. 我不太分阶段)。

所以..我应该将平均结果存储为浮点数、小数还是双精度?

当我检查 LINQ 返回的内容时,它可以返回所有三个值!

最后,还有什么是相关的 SQL 数据类型字段。

干杯!

0 投票
2 回答
3891 浏览

.net - 是否有用于调整浮点值的控件之类的 winforms 微调器?

我有一个带有浮点值的 .NET 应用程序,我想通过用户可调节的增量来上下调整它,比如微调控件。在我开始自己建造之前,这样的东西是否已经存在?

0 投票
5 回答
653 浏览

floating-point - 您将存储工程数据的计量单位是什么?

在我们的应用程序中,我们目前决定将所有工程数据存储在我们的 SI 数据库中。

我担心我们可能会冒在我们的数据库或 .NET 数字类型中没有足够精确度和准确性的风险。我还担心我们可能会看到浮点数学的伪像(尽管这可能是一个问题)。

例如,源数据可能是以 Psi(磅/平方英寸)表示的压力量(并从某些第 3 方服务中读取)。工程师会选择这种计量单位,因为(对于表示的数量)这将倾向于提供易于消化、人类可读的数字,而不需要科学记数法。

当我们“标准化”这个数字时,即当我们为了我们自己的持久性而转换这个数量时,我们可能会将它转换为 Pa(帕斯卡),这需要将这个数字乘以或除以某个其他可能很大的数字。

我们经常最终存储非常大或非常小的数字,更糟糕的是 - 我们可能会对这些数字进行进一步的计算。

目前我们使用ORACLE float 和System.Double。

人们对此有何看法?

更新

进一步的研究发现了即将推出的 F# 语言(在我写的 CTP 中)对度量单位的支持。

看来我们将能够让 F# 理解用户输入,例如:

我们还可以创建自己的派生单位和单位系统。

在 F# 中为牛顿创建派生单位
(来源:msdn.com