ieee-754相关内容

为什么pow(-infinity,正非整数)+ infinity?

C99附件F(IEEE浮点支持)表示: pow(−∞, y)对于y> 0而不是奇整数返回+∞. 但是,例如,(−∞) 0.5 实际上具有假想值±∞i,而不是+∞. C99自己的sqrt(−∞)返回NaN并按预期生成域错误.为什么然后pow要求返回+∞? (大多数其他语言都直接使用C库,或者像这种情况下的Python一样,按照标准复制它的行为,因此在实践中,这不仅影响到C99,而且 ..
发布时间:2020-05-06 10:46:42 其他开发

为什么NaN不等于NaN?

相关的IEEE标准定义了数字常数NaN(不是数字),并规定NaN应该比较不等于其自身.为什么会这样? 我熟悉的所有语言都实现了此规则.但这通常会导致严重的问题,例如将NaN存储在容器中,将NaN放入正在排序的数据中时发生意外行为等.更不用说,绝大多数程序员都期望任何对象都等于自己(在他们了解NaN之前),令人惊讶的是,它们增加了错误和混乱. IEEE标准经过深思熟虑,因此我确信有充分的 ..
发布时间:2020-04-27 03:25:34 其他开发

为什么console.log只显示由0.1 + 0.2 = 0.30000000000000004产生的部分数字

还没有在stackoverlow上询问这个问题!我不是在问为什么0.1 + 0.2不等于0.3,我问的是非常不同的东西!请在将其标记为重复之前阅读该问题。 我写过这个函数,显示JavaScript如何存储浮点数64位: function to64bitFloat(number){ var f = new Float64Array(1); f [0] =数字; var vie ..
发布时间:2019-06-12 12:54:41 前端开发

解析HEX浮点数

我有整数,例如, 4060 。 我如何获得HEX浮点数( \ x34 \ xC8 \ x7D \ x45 ) JS还没有 float 类型,所以我不知道如何进行这种转换。 谢谢。 解决方案 以上答案不再有效。 缓冲区已被弃用(请参阅 https:// nodejs.org/api/buffer.html#buffer_new_buffer_size )。 新解决方案 ..
发布时间:2019-06-07 19:58:26 前端开发

用JavaScript或IEEE-754舍入怪癖?

我在我的一个单元测试中遇到了一个奇怪的问题,我在JavaScript中得到了意想不到的舍入结果: (2.005).toFixed(2) //产生“2.00” (2.00501).toFixed(2) //产生“2.01” 最初我怀疑这是一个仅限Webkit的问题,但它在Gecko中有重复,这对我来说意味着这是一个预期的副作用ECMA-262或IEEE-754。我假设2 ..
发布时间:2019-06-06 14:21:19 前端开发

Layman解释为什么JavaScript有奇怪的浮动数学 - IEEE 754标准

当我对浮点数进行数学运算时,我从来不知道JavaScript到底发生了什么。我一直都很害怕使用小数,直到我尽可能地避开它们。但是,如果我知道在IEEE 754标准中幕后发生了什么,那么我将能够预测会发生什么;具有可预测性,我会更自信,也不会感到害怕。 有人可以给我一个简单的解释(就像解释整数的二进制表示一样简单关于IEEE 754标准如何工作以及它如何产生这种副作用: 0.1 + 0.2!= ..
发布时间:2019-06-06 04:50:05 前端开发

为什么Number.MAX_SAFE_INTEGER 9,007,199,254,740,991而不是9,007,199,254,740,992?

ECMAScript 6的 Number.MAX_SAFE_INTEGER 应该表示JavaScript在浮点精度出现问题之前可以存储的最大数值。但是,要求添加到此值的数字1也必须表示为数字。 Number.MAX_SAFE_INTEGER 注意 Number的值.MAX_SAFE_INTEGER 是最大的整数 n ,这样 n 和 n + 1 都可以完全表示为 Number 值。 ..
发布时间:2018-08-06 20:30:54 前端开发

提取Javascript数字的指数和尾数

AFAIK没有办法获得Javascript中的数字背后的位,这让我觉得我在看分解问题:找到 m 和 n ,这样 2 ^ n * m = k 给定 k 。由于整数因子分解是在NP中,我只能假设这是一个相当困难的问题。 我正在实现一个用于生成Javascript的GHC插件,并且需要实现 decodeFloat_Int#和 decodeDouble_2Int# 基本操作;我想我可以重写基本库的一 ..
发布时间:2018-06-04 14:38:07 前端开发

是否有可能让isnan()在gfortran -O3 -ffast-math中工作?

我想用gfortran编译一个程序,并启用 -O3 -ffast-math ,因为它提供了很好的性能提升。我很困惑,gfortran的 isnan()抓住了一些NaN,但不是全部。阅读后 检查双精度(或浮点数)是否是C ++中的NaN 可能导致依赖于 IEEE的确切实现的程序的错误输出或ISO规则/数学函数的规范。 根据gcc 4.7.2的手册页。那么如果数字不是按照IEEE标 ..
发布时间:2018-03-16 17:00:03 其他开发

数字0在二进制浮点格式中看起来如何?

浮点格式(IEEE)有32位。在符号的第一位之后,有8位用于偏置指数,之后是23位用于尾数。在这个尾数是第一个1(总是1)总是隐藏,这导致我的问题: 数字0如何在这种格式?因为如果指数0的数字总是1. 加尾数永远是最小的1右?如果他们在尾数只有零,它会计为'1.0'... 我真的不明白这一点。 解决方案 Wikipedia a>告诉你: 0000 0000 = 0 ..
发布时间:2017-12-21 22:28:49 其他开发

为什么`0.4 / 2`等于`0.2`,同时`0.6 / 3`等于`python中的0.19999999999999998`?

我知道这些是浮点除法。但为什么这两个公式的表现不一样呢?我还做了一些调查,结果让我更加困惑: >>> 0.9 / 3 0.3 >>> 1.2 / 3 0.39999999999999997 >>> 1.5 / 3 0.5 这里的逻辑决定是否打印结果是否有一位小数或更多? PS:我用python3.4来做上面的实验。 b $ b 解决方案 ..
发布时间:2017-12-21 22:28:28 Python

float128和双重算术

我在维基百科上看到,实现四位精度的方法是使用双二进制算术,即使它在位数方面的精度不完全相同: https://en.wikipedia.org/wiki/Quadruple-precision_floating-point_format 在这种情况下,我们使用两个double来存储值。所以我们做了两个操作来计算结果,每一个结果的两倍。 在这种情况下,我们可以在每个double上产生舍入 ..
发布时间:2017-12-21 22:27:18 C/C++开发

定点到浮点和向后

正在转换固定铂。 (固定n比特为分数)到IEEE双重安全吗? ie:确实IEEE双格式可以表示一个固定点可以表示的所有数字吗? 测试:一个数字转为浮动pt格式,然后返回到原来的固定pt格式。 p>假设你的定点数是以32位整数存储的,那么IEEE双精度可以表示任何以固定点表示的值。这是因为double有一个53位的尾数,你的定点值只有32位的精度,而定点值的浮点指数在-32到32之间(取 ..

符合IEEE 754标准的NAN的符号位

我想执行一个浮点单精度加法运算,其中 A = + infinity(7F800000) B = - infinity(FF800000) 请问结果(A + B)是+ NAN还是-NAN?另外一个相关的问题是: p> 如果NAN通过算术运算传播,我们得到qNAN。 鉴于sNAN代表无效的异常操作。 因此,上述操作将导致一个sNAN。 我的理解是否正确? 解决方案 I ..
发布时间:2017-12-21 22:24:02 其他开发

IEEE中逐渐下溢和非规格化的数字

我正在阅读关于浮点表示和下溢/溢出的问题,并且我想到了一些有趣的东西 - 逐渐下溢。根据我的理解,渐进式下溢意味着例如减法运算x-y的结果非常小,以至于可以将其清除为0,但浮点系统产生的数量比UFL小。到处都是我读的,它是通过丢失一些准确的,这意味着一些尾数的尾数进行指数,所以我们可以有一个更小的指数? 解决方案 >有效的答案是肯定的 - 尾数的位到指数。这些被称为次正常(又名非正常)数字。例如, ..
发布时间:2017-12-21 22:23:26 其他开发

使用减法在ieee-754浮点格式中引起下溢

以IEEE754格式表示两个数字X和Y,这样计算XY将会导致下溢。 据我了解,每一个操作都可能导致下溢,但是对于我的生活,我无法找到一个减法的例子。 请帮助! 谢谢 解决方案 当默认异常处理生效时,产生一个小的减法sup> 1 )非零结果概念上会导致下溢异常,但是没有可观察到的效果,因为: A由于浮点格式的特性(不存在低于低于正常值的位的有效位,并且与乘法不同,减法不能 ..

如何将float转换为二进制而不使用不安全的代码?

有没有办法将一个浮点数( f32 或 f64 )转换为一个数据类型I可以按位访问,如 u32 / u64 ?也就是说,对应于: fn as_bits(i:f64) - > u64 { unsafe {mem :: transmute(i)} } 但没有不安全。此代码根据规则是安全的,即使它可能不会在所有平台上返回相同的值,特别是对于NaN。反向安全的接口也不错。 ..
发布时间:2017-12-21 22:18:35 其他开发