ieee-754相关内容

是否有任何真实世界的 CPU 不使用 IEEE 754?

我正在优化数字/统计库的排序函数,基于以下假设:在过滤掉任何 NaN 并进行一些操作后,浮点数可以在不改变结果的情况下与 32 位整数进行比较,而双精度数可以比较为 64 位整数. 这似乎将这些数组的排序速度提高了大约 40%,只要浮点数的位级表示是 IEEE 754,我的假设就成立.人们实际上是否有任何现实世界的 CPU使用(不包括在此库不针对的嵌入式设备中)使用其他可能打破此假设的表示? ..
发布时间:2022-01-09 10:03:33 其他开发

在 C# 中格式化双精度输出

运行与 双乘法是否在 .NET 中损坏? 并阅读了几篇关于 C# 字符串格式的文章,我认为: {双 i = 10 * 0.69;Console.WriteLine(i);Console.WriteLine(String.Format("{0:F20}", i));Console.WriteLine(String.Format("+ {0:F20}", 6.9 - i));Console.Writ ..
发布时间:2022-01-09 10:03:17 C#/.NET

强制浮点在 .NET 中具有确定性?

我已经阅读了很多关于 .NET 中浮点确定性的内容,即确保具有相同输入的相同代码在不同机器上给出相同的结果.由于 .NET 缺少 Java 的 fpstrict 和 MSVC 的 fp:strict 等选项,共识似乎是没有办法解决这个问题使用纯托管代码的问题.C# 游戏 AI Wars 已决定使用 Fixed-point math 代替,但这是一个繁琐的解决方案. 主要问题似乎是 CLR 允 ..
发布时间:2022-01-09 10:02:01 C#/.NET

Java中的浮点和双精度数据类型

float 数据类型是单精度 32 位 IEEE 754 浮点数,double 数据类型是双精度 64 位 IEEE 754 浮点数. 这是什么意思?我什么时候应该使用 float 而不是 double 或反之亦然? 解决方案 维基百科页面这是一个很好的起点. 总结一下: float 用 32 位表示,有 1 个符号位、8 位指数和 23 位有效数字(或从科学记数法数得出 ..
发布时间:2022-01-09 09:59:34 Java开发

在 16、32 和 64 位 IEEE-754 系统中可以表示什么范围的数字?

我对浮点数的表示方式略知一二,但恐怕还不够. 一般问题是: 对于给定的精度(对于我来说,精确的小数位数以 10 为基数),对于 16 位、32 位和 64 位 IEEE-754 系统可以表示哪些数字范围? 具体来说,我只对精确到 +/-0.5(个位)或 +/-0.0005(千分位)的 16 位和 32 位数字的范围感兴趣. 解决方案 对于给定的 IEEE-754 浮点数X ..
发布时间:2022-01-09 09:57:45 其他开发

浮点数和双精度数有什么区别?

我已经了解了双精度和单精度之间的区别.然而,在大多数情况下,float 和 double 似乎可以互换,即使用其中一个似乎不会影响结果.真的是这样吗?浮点数和双精度数何时可以互换?它们之间有什么区别? 解决方案 差别很大. 顾名思义,double 有 2xfloat[1]的精度支持>.一般来说,double 有 15 位精度,而 float 有 7. 位数的计算方法如下: ..
发布时间:2022-01-09 09:56:18 C/C++开发

为什么 NaN 不等于 NaN?

相关的 IEEE 标准定义了一个数字常量 NaN(不是数字),并规定 NaN 应该与自身不相等.这是为什么呢? 我熟悉的所有语言都执行此规则.但它经常会导致严重的问题,例如当 NaN 存储在容器中时的意外行为,当 NaN 在正在排序的数据中时等等.更不用说,绝大多数程序员都希望任何对象都等于自身(在他们了解 NaN 之前),因此让他们感到惊讶增加了错误和混乱. IEEE 标准经过深思熟 ..
发布时间:2022-01-09 09:55:03 其他开发

IEEE 754 浮点数无法准确表示的第一个整数是哪个?

为了清楚起见,如果我使用的是实现 IEE 754 浮点数的语言并声明: float f0 = 0.f;浮动 f1 = 1.f; ...然后将它们打印出来,我会得到 0.0000 和 1.0000 - 完全正确. 但是 IEEE 754 不能代表实线中的所有数字.接近于零,“差距"很小;距离越远,差距越大. 所以,我的问题是:对于 IEEE 754 浮点数,它是第一个(最接近于零)无 ..
发布时间:2022-01-09 09:54:47 其他开发

对于 IEEE754 NaN 值返回 false 的所有比较的基本原理是什么?

为什么 NaN 值的比较与所有其他值的行为不同?也就是说,所有与运算符 ==、=、 的比较(其中一个或两个值为 NaN)都返回 false,这与所有其他值的行为相反. 我想这在某种程度上简化了数值计算,但我找不到明确说明的原因,即使在 Lecture Notes on the Status of IEEE 754 by Kahan,详细讨论了其他设计决策. 这种异常行为在 ..
发布时间:2022-01-09 09:52:14 其他开发

是否有任何浮点密集型代码在任何基于 x86 的架构中产生位精确的结果?

我想知道使用浮点运算的 C 或 C++ 中的任何代码是否会在任何基于 x86 的体系结构中产生精确的结果,而不管代码的复杂性. 据我所知,自 Intel 8087 以来的任何 x86 架构都使用准备处理 IEEE-754 浮点数的 FPU 单元,而且我看不出任何原因导致结果在不同架构中会有所不同.但是,如果它们不同(即由于不同的编译器或不同的优化级别),是否可以通过配置编译器来产生精确的结果 ..
发布时间:2022-01-06 12:55:49 其他开发

Lua - 打包 IEEE754 单精度浮点数

我想在纯 Lua 中创建一个函数,生成一个分数(23 位)、一个指数(8 位)和一个符号(1 位)来自一个数,使该数约等于 math.ldexp(fraction, exponent - 127) * (sign == 1 and -1 or 1),然后将生成的值打包成 32 位. 数学库中的某个函数引起了我的注意: frexp 函数将浮点值 (v) 分解为尾数 (m) 和指数 (n) ..
发布时间:2021-12-30 20:19:56 其他开发

确保 C++ 双精度为 64 位

在我的 C++ 程序中,我需要从外部字节序列中提取一个 64 位浮点数.有没有办法在编译时确保双打是 64 位?我应该使用其他类型来存储数据吗? 编辑:如果您正在阅读本文并且实际上正在寻找一种确保以 IEEE 754 格式存储的方法,请查看下面的 Adam Rosenfield 的回答. 解决方案 对其他答案的改进(假设 char 是 8 位,标准不保证这一点......).应该是这 ..
发布时间:2021-12-25 13:29:45 C/C++开发

为什么IEEE754单精度浮点数只有7位精度?

为什么单精度浮点数有 7 位精度(或双精度 15-16 位精度)? 谁能解释一下我们是如何根据为 float(Sign(32) Exponent(30-23), Fraction (22-0)) 分配的 32 位得出的? 解决方案 有效数的 23 个小数位 (22-0) 出现在内存格式中,但总精度实际上是 24 位,因为我们假设有一个前导 1.这相当于 log10(2^24) ≈ 7 ..

哪个是 IEEE 754 浮点数无法准确表示的第一个整数?

为了清楚起见,如果我使用的是实现 IEE 754 浮点数的语言,并且我声明: float f0 = 0.f;浮动 f1 = 1.f; ...然后将它们打印出来,我会得到 0.0000 和 1.0000 - 正是如此. 但 IEEE 754 无法表示沿实线的所有数字.接近于零,“差距"很小;距离越远,差距越大. 所以,我的问题是:对于 IEEE 754 浮点数,它是第一个(最接近于零 ..
发布时间:2021-12-25 12:57:35 其他开发

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

可以存储在 IEEE 754 double 类型中且不丢失精度的最大“无浮点"整数是多少? 解决方案 在不丢失精度的情况下可以存储在 double 中的最大/最大整数与 double 的最大可能值相同.也就是说,DBL_MAX 或大约 1.8 × 10308(如果您的双精度数是 IEEE 754 64 位双精度数).它是一个整数.它被准确地表现出来.你还想要什么? 继续,问我最大的整 ..
发布时间:2021-12-25 12:57:21 其他开发

信号 NaN 的用处?

我最近阅读了很多关于 IEEE 754 和 x87 架构的书.我正在考虑在我正在处理的一些数字计算代码中使用 NaN 作为“缺失值",我希望使用 signaling NaN 可以让我在这种情况下捕获浮点异常我不想继续处理“缺失值".相反,我会使用 quiet NaN 来允许“缺失值"通过计算传播.但是,根据现有的(非常有限的)文档,信号 NaN 并不像我认为的那样工作. 这是我所知道的总结( ..
发布时间:2021-12-22 18:38:17 C/C++开发

C++中double/float类型的二进制序列化的可移植性

C++ 标准不讨论 float 和 double 类型的底层布局,只讨论它们应该表示的值范围.(对于有符号类型也是如此,是两个的恭维还是别的什么) 我的问题是:用于以可移植方式序列化/反序列化诸如 double 和 float 之类的 POD 类型的技术有哪些?目前看来,唯一的方法是将值按字面表示(如“123.456"),double 的 ieee754 布局并不是所有架构的标准. 解 ..
发布时间:2021-12-21 22:00:09 C/C++开发

iPhone 上的双与浮动

我刚刚听说 iphone 不能在本机上执行 double 从而使它们比常规浮点速度慢得多. 这是真的吗?证据? 我对这个问题很感兴趣,因为我的程序需要高精度计算,我将不得不在速度上妥协. 解决方案 iPhone 可以在硬件中进行单精度和双精度运算.在 1176(原始 iPhone 和 iPhone3G)上,它们以大致相同的速度运行,但您可以在缓存中放入更多单精度数据.在 Cor ..
发布时间:2021-12-20 23:15:25 移动开发