46得票9回答
C ++中双精度/浮点类型的二进制序列化可移植性

C++ 标准并未讨论浮点数和双精度类型的底层布局,仅说明了它们应该表示的值的范围。(对于有符号类型也是如此,其是否为二进制补码或其他方式) 我的问题是:有哪些技术可以以可移植的方式序列化/反序列化 POD 类型,比如 double 和 float?目前似乎唯一的方法是直接表示该值(例如 "1...

44得票1回答
如果其中一个参数是NaN,会导致C/C++中的<、<=和==运算符返回true吗?

我的理解是,IEEE-754浮点比较规则中除了!=操作符外,所有比较操作符如果其中一个或两个参数为NaN,则会返回false;而!=操作符会返回true。我可以通过一项简单的独立测试轻松地重现这种行为:for (int ii = 0; ii &lt; 4; ++ii) { float ...

42得票5回答
现实世界中有没有不使用IEEE 754的CPU?

我正在优化一个基于数值/统计库的排序函数,假设在过滤掉任何NaN并进行一些处理后,浮点数可以作为32位整数进行比较而不改变结果,双精度浮点数可以作为64位整数进行比较。 这似乎可以将这些数组的排序速度提高约40%,只要浮点数的位级表示是IEEE 754。是否有人们实际使用(不包括此库不针对的...

42得票2回答
从整数到浮点数再返回时,符号会发生变化。

请考虑以下代码,它是我的实际问题的SSCCE:#include &lt;iostream&gt; int roundtrip(int x) { return int(float(x)); } int main() { int a = 2147483583; int ...

42得票4回答
C++标准在浮点数的表示方面有什么具体规定吗?

对于类型T,如果std::is_floating_point&lt;T&gt; ::value为true,C++标准是否规定了T应该如何实现? 例如,T是否必须遵循符号/尾数/指数表示法?还是可以完全任意?

42得票7回答
在二进制表示法中,小数点后的数字代表什么意思?

我有一个关于如何将十进制数转换为IEEE 754浮点数表示的示例Number: 45.25 (base 10) = 101101.01 (base 2) Sign: 0 Normalized form N = 1.0110101 * 2^5 Exponent esp = 5 E = 5 + ...

39得票6回答
C语言中浮点数数据类型的范围是什么?

我正在阅读一本关于C语言的书,其中讨论了浮点数的范围,作者给出了如下表格:Type Smallest Positive Value Largest value Precision ==== ======================= =============...

38得票4回答
在 Haskell 中将 IEEE 754 浮点数的 Word32/64 转换为 Haskell Float/Double,并从中进行转换。

问题 在Haskell中,base库和Hackage包提供了几种将二进制IEEE-754浮点数据转换为提升后的Float和Double类型的方法。但这些方法的精度、性能和可移植性都不太清楚。 对于一个面向GHC的库,旨在跨平台(反)序列化二进制格式,处理IEEE-754浮点数据的最佳方法是...

37得票3回答
32位和64位操作系统中的双字节大小

在32位和64位环境下运行我的应用程序时,double大小是否有区别? 如果我没记错的话,在32位环境中,double会占用0后面16个数字,而在64位环境中,double会占用32个数字,我对吗?

37得票5回答
Java中的半精度浮点数

请问是否有任何Java库可以对IEEE 754半精度数执行计算或将其转换为双精度? 以下两种方法均可: 保留半精度格式的数字,并使用整数算术和位操作进行计算(如MicroFloat用于单精度和双精度)。 在单精度或双精度中执行所有计算,将半精度转换为传输(在这种情况下,我需要经过充分测试...