问题标签 [ieee-754]

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

c# - 如何测试数字转换是否会改变值?

我正在执行一些需要将 、 和 表示uintlongIEEE ulong754decimal双浮点值的数据类型转换。我希望能够在执行转换之前检测 IEEE 754 数据类型是否不能包含该值。

一个蛮力解决方案是在演员表周围包裹一个 try-catch 以双重查找OverflowException. 通读某些CLR 文档意味着某些转换只是默默地更改值,没有任何例外。

有没有万无一失的方法来做这个检查?我正在寻找完整性而不是易于实施。我有一种感觉,我将仔细阅读 IEEE 754 规范并仔细检查 matissa 和指数......

我应该补充一点,我关心的是准确地表示整数,而浮点精度的损失是次要的问题(但仍然值得考虑)。

编辑: Int32 能够完全表示为 IEE-754。数据类型也是Decimal问题的很大一部分。

重要更新:如果您指的是这个问题,您还应该阅读这个问题:IEEE-754 Double (64-bit floating point) vs. Long (64-bit Integer) Revisited

它指出了答案中的一个缺陷,即一些非常大的值也能够由 IEEE-754 精确表示。虽然这可能意味着该值将正确地往返,但出于我最初的目的(它将往返于 JavaScript)它不会。

CLRs System.Double 类型中似乎也存在一个错误,因为它不能正确地允许这些值往返。

0 投票
3 回答
12076 浏览

iphone - iPhone上的双倍vs浮动

我刚刚听说 iphone 不能在本机上做 double,从而使它们比常规浮动慢得多。

这是真的?证据?

我对这个问题很感兴趣,因为我的程序需要高精度计算,而且我必须在速度上做出妥协。

0 投票
14 回答
79357 浏览

c++ - 32 位到 16 位浮点转换

我需要一个跨平台的库/算法,它将在 32 位和 16 位浮点数之间进行转换。我不需要对 16 位数字进行数学运算;我只需要减小 32 位浮点数的大小,以便它们可以通过网络发送。我正在使用 C++。

我知道我会损失多少精度,但这对我的应用程序来说没问题。

IEEE 16 位格式会很棒。

0 投票
2 回答
2349 浏览

c# - 查找具有相同内部表示的浮点数/双精度数的最小值/最大值

刷新浮点数(也是PDF)、IEEE-754 并参与了关于在转换为字符串时进行浮点舍入的讨论,这让我想到了修补程序:如何获得二进制表示的给定浮点数的最大值和最小值是平等的。

免责声明:对于本次讨论,我喜欢使用 IEEE-754 描述的 32 位和 64 位浮点。我对扩展浮点(80 位)或四边形(128 位 IEEE-754-2008)或任何其他标准(IEEE-854)不感兴趣。

背景:计算机不擅长以0.1二进制表示。在 C# 中,浮点数将其表示为3DCCCCCD内部(C# 使用四舍五入),双精度数表示为3FB999999999999A. 相同的位模式用于十进制0.100000005(float) 和0.1000000000000000124(double),但不用于0.1000000000000000144(double)。

为方便起见,以下 C# 代码给出了这些内部表示:

在 的情况下0.1,没有用相同位模式表示的小十进制数,任何0.99...99将产生不同的位表示(即,内部0.999999937产生的浮点数3F7FFFFF)。

我的问题很简单:如何找到内部存储在相同二进制表示中的给定浮点(或双精度)的最低和最高十进制值。

为什么:(我知道你会问)在 .NET 转换为字符串以及从字符串转换时查找舍入错误,以找到内部精确值并更好地理解我自己的舍入错误。

我的猜测是这样的:取尾数,去掉其余的,得到它的确切值,得到一个(尾数位)高,然后计算平均值:低于它的任何东西都会产生相同的位模式。我的主要问题是:如何将小数部分作为整数(位操作它不是我最强的资产)。Jon Skeet 的 DoubleConverter类可能会有所帮助。

0 投票
4 回答
7201 浏览

python - Python float - str - 浮动怪异

这里发生了什么?如何转换0.47000000000000003为字符串并将结果值转换回浮点数?

我在 Windows 上使用 Python 2.5.4。

0 投票
4 回答
749 浏览

java - java浮点数可以按它们的字节表示排序吗?

我在 Hadoop 中工作,我需要提供一个比较器来将对象排序为原始网络顺序字节数组。这对我来说很容易用整数来做——我只是按顺序比较每个字节。我也需要为花车做这个。我认为,但我找不到参考,Java 使用的浮点数的 IEEE 754 格式可以通过将每个字节作为有符号的 8 位值进行比较来排序。

任何人都可以证实或反驳这一点吗?

编辑:表示是 IEEE 754 32 位浮点。我实际上有一个(更大的)字节缓冲区以及该缓冲区内的偏移量和长度。我发现已经有一些实用方法可以很容易地把它变成一个浮点数,所以我想这个问题是没有实际意义的。我仍然很好奇是否有人知道答案。

0 投票
3 回答
1858 浏览

python - ldexp 和 frexp 在 python 中是如何工作的?

python frexp 和 ldexp 函数将浮点数拆分为尾数和指数。有谁知道这个过程是否暴露了实际的浮点结构,或者它是否需要 python 进行昂贵的对数调用?

0 投票
8 回答
233854 浏览

types - 可以存储在 double 中的最大整数

可以存储在 IEEE 754 双精度类型中而不会丢失精度的最大“非浮动”整数是多少?

0 投票
5 回答
6242 浏览

c++ - 如何将 IEEE-754 格式整数输出为浮点数

我有一个无符号长整数值,它表示使用 IEEE-754 格式的浮点数。在 C++ 中将其打印为浮点数的最快方法是什么?

我知道一种方法,但我想知道 C++ 中是否有一个更好的方便实用程序。

我知道的方式示例是:

(这会打印出 "float value is: 5" )

0 投票
3 回答
1342 浏览

c - 在不依赖 FPU 舍入模式的情况下将 double 转换为 float

有没有人有方便的代码片段将 IEEE 754 转换double为紧随其后的 (resp.superior) float而不改变或假设关于 FPU 当前舍入模式的任何事情

注意:这个约束可能意味着根本不使用 FPU。我希望在这些条件下最简单的方法是读取 64 位长的双精度位并使用它。

为简单起见,您可以假设您选择的字节序,并且可以通过d以下联合字段获得所讨论的双精度:

我会尝试自己做,但我确信我会为非规范化或负数引入难以注意到的错误。