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

c# - Extracting mantissa and exponent from double in c#

Is there any straightforward way to get the mantissa and exponent from a double in c# (or .NET in general)?

I found this example using Google, but I'm not sure how robust it would be. Could the binary representation for a double change in some future version of the framework, etc?

The other alternative I found was to use System.Decimal instead of double and use the Decimal.GetBits() method to extract them.

Any suggestions?

0 投票
5 回答
16958 浏览

algorithm - 如何最好地总结大量浮点数?

想象一下,您有大量各种大小的浮点数。计算总和的最正确方法是什么,并且误差最小?例如,当数组看起来像这样时:

然后你用一个简单的循环从左到右加起来,比如

每当您将较小的数字相加时,可能会低于精度阈值,因此误差会越来越大。据我所知,最好的方法是对数组进行排序并开始从最低到最高的数字相加,但我想知道是否有更好的方法(更快,更精确)?

编辑:感谢您的回答,我现在有一个工作代码可以完美地总结 Java 中的双精度值。它是来自获胜答案的 Python 帖子的直接端口。该解决方案通过了我所有的单元测试。(这里有一个更长但经过优化的版本Summarizer.java

0 投票
13 回答
55763 浏览

language-agnostic - 如何显示浮点数或双精度数的二进制表示?

我想显示浮点数的二进制(或十六进制)表示。我知道如何手动转换(使用这里的方法),但我有兴趣查看执行相同操作的代码示例。

虽然我对 C++ 和 Java 解决方案特别感兴趣,但我想知道是否有任何语言使它特别容易,所以我让这种语言不可知。我很想看到其他语言的一些解决方案。

编辑:我已经很好地覆盖了 C、C++、C# 和 Java。是否有任何替代语言专家想要添加到列表中?

0 投票
12 回答
8968 浏览

c++ - 为什么 c/c++ 浮点类型的命名如此奇怪?

C++ 提供了三种浮点类型:float、double 和 long double。我很少在我的代码中使用浮点数,但是当我这样做时,我总是被无害的行上的警告所吸引,比如

问题是文字 4.0 是双精度数,而不是浮点数——这很烦人。

对于整数类型,我们有 short int、int 和 long int,这非常简单。为什么 C 没有短浮点数、浮点数和长浮点数?“双”到底是从哪里来的?

编辑:浮动类型之间的关系似乎类似于整数。double 必须至少与 float 一样大,long double 至少与 double 一样大。没有其他精度/范围保证。

0 投票
3 回答
27785 浏览

python - 浮点限制

我的代码:

我想显示a为浮点值。

由于a是一个字符串,我尝试了:

我得到的结果是:

我想要这个问题的解决方案。请帮助我。

我正在关注本教程

0 投票
7 回答
29209 浏览

c# - 何时使用浮点数

几年前,我学到了关于浮点数精度问题的艰难方法,所以我放弃了使用它们。但是,我仍然会遇到使用浮点数的代码,这让我感到畏缩,因为我知道有些计算会不准确。

那么,什么时候适合使用浮点数呢?

编辑: 作为信息,我不认为我遇到过一个数字的准确性并不重要的程序。但我有兴趣听听例子。

0 投票
6 回答
42107 浏览

c++ - 如何在 C++ 中检查无限和不确定的值?

在我的程序中,当一个值被零除时,通常会出现无穷大。当我将零除以零时,我变得不确定。如何在 C++ 中检查无限和不确定的值?

在 C++ 中,无穷大由 1.#INF 表示。不确定由 -1.#IND 表示。问题是如何测试一个变量是无限的还是不确定的。检查无穷大相对简单:您可以在特定的 C++ 中找到无穷大定义。对于我的情况(VS2003),它是 std::numeric_limits::infinity()。您必须包含“限制”才能使用它。您可以将此无限值分配给变量,然后将其与某个值进行比较,以检查该值是否为无限。

Indeterminate 有点棘手,因为您无法将不确定的值与其他值进行比较。任何比较都返回 false。您可以使用此属性通过将其与自身进行比较来检测不确定的值。假设您有一个名为 aVal 的双变量。在正常情况下,aVal != aVal 返回 false。但如果值不确定,aIndVal != aIndVal 返回真。无限值不存在这种奇怪的情况,即 aInfVal != aInfVal 总是返回 false。

以下是两个可用于检查不确定值和无限值的函数:

这些检查有没有更好的方法,我错过了什么吗?

0 投票
16 回答
23188 浏览

c++ - 如何加快浮点数到整数的转换?

我们在我们的项目中进行了大量的浮点到整数的转换。基本上,像这样

执行转换的默认 C 函数结果非常耗时。

是否有任何解决方法(可能是手动调整功能)可以稍微加快这个过程?我们不太关心精度。

0 投票
2 回答
4647 浏览

linux - 在 Linux 设备驱动程序中使用浮点的编码约定是什么?

这与 这个问题有关

我不是 Linux 设备驱动程序或内核模块方面的专家,但我一直在阅读 Rubini & Corbet 的“Linux 设备驱动程序”[O'Reilly] 和一些在线资源,但我一直无法找到关于这个具体问题的任何事情。

何时允许内核或驱动程序模块使用浮点寄存器?
如果是这样,谁负责保存和恢复其内容?
(假设 x86-64 架构)

如果我理解正确,每当 KM 运行时,它都在使用已从某个应用程序线程抢占的硬件上下文(或硬件线程或寄存器集——无论您想调用什么)。如果您在 c 中编写 KM,编译器将正确确保通用寄存器正确保存和恢复(就像在应用程序中一样),但浮点寄存器不会自动发生这种情况。就此而言,许多 KM 甚至不能假设处理器具有任何浮点能力。

我猜想使用浮点的KM必须小心保存和恢复浮点状态是否正确?是否有这样做的标准内核函数?

是否在任何地方都说明了此编码约定?
对于非 SMP 驱动程序,它们是否不同?
对于较旧的非抢占式内核和较新的抢占式内核,它们是否不同?

0 投票
2 回答
484 浏览

java - 几乎等于 2s 补码或 BigDecimal 缩放

比较两个浮点值的更好方法是什么 - 使用 Epsilon 或带有缩放的 Big Decimal 比较?

例如,您的数据范围是 0.00 - 49,999.99?