- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将 float 初始化为无穷大,并且不使用 INFINITY 宏。
float f[] = {
0b01111111100000000000000000000000, // 0x7f800000
0x7f800000 -1,
0x7f800000 -2,
0x7f800000 -64,
0x7f800000 -65
};
打印:
2139095040.000000
2139095040.000000
2139095040.000000
2139095040.000000
2139094912.000000
为什么第一个数据不是无穷大(如1/0.0
),而其他数据直到最后一个数据才改变?
0x7f7fffff 应该是 float 可以达到的最大值,并尝试 here 0x7f80000 被视为无穷大。
最佳答案
问题的原因是符号:
0x7f800000
0b01111111100000000000000000000000
此符号与 int
相关键入并在分配 int
时至float
这意味着implicit conversion
来自int
至float
。在这种情况下,您的两个号码都是 2139095040
以十进制表示,它将被转换为 float
类型。
为了避免这个问题,您可以在 4 个字节的精确位位置上分配值。这里有几个例子。
float f;
*(int*)&f = 0x7f800000;
或者你可以使用 union
union u_fi {
float f;
int i;
} fi;
fi.i = 0x7f800000;
但是使用这两种解决方案时要小心。当 int
时它不会安全工作在第一种情况下超过 4 个字节,当 int
时根本不起作用是 big-endian
。因此,该解决方案依赖于平台,我建议使用如下所示的宏。
解决您问题的另一个方法是使用非常大的数字,将其转换为 float
如inf
。为此,您可以使用宏,如 <math.h>
中所示。
#define _HUGE_ENUF 1e+300
#define INFINITY ((float)(_HUGE_ENUF * _HUGE_ENUF))
float f = INFINITY;
关于c - 将无穷大赋给 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35022082/
任何数字减去它本身应该是 0,对吗? 3 - 3 === 0 那为什么 Infinity - Infinity === NaN 因为 typeof Infinity 是 'number': 最佳答案
我有一个可能为零的数字。我除以那个数字所以我想测试它是否为零以防止 NaN 和无穷大。由于除法中的舍入误差,我是否仍可能创建 NaN/无穷大? double x; // might be zero d
我使用carrierwave 和mini_magick 上传图片。在开发中一切都很好,但在生产中它引发了 FloatDomainError (Infinity)当我尝试上传图片时。我在同一台服务器上托
我有一个递归函数,它从一组边生成路径列表。但是,有时由于图形的性质,它会进入循环并生成一个字典,其中在列表中包含无限循环符号 [...],例如: {('a', 'b'): [[1, 2, 8, 9,
我正在摆弄 JavaScript 中的按位运算符,我发现有一件事值得注意。 bitwise or operator返回1如果两个输入位之一是 1 作为输出位。这样做x | 0总是返回x ,因为| 0没
我检查二叉树是否是 BST 的解决方案如下: def is_BST(node): if node is None: return False stack = [(node, -floa
给定(Python3): >>> float('inf') == Decimal('inf') True >>> float('-inf') >> float('-inf') >> Decimal('
我正在尝试使用 scikit learn 拟合一个简单的机器学习模型。在这条线上: clf.fit(features, labels) 我得到一个熟悉的错误: Input contains NaN,
我有一个数据集,它是 2 个浮点类型数字的比率。有些值具有 inf 表示无穷大(除以零)的情况。如何使用 pd.qcut/pd.cut 和 inf 值? 我的数据可以访问 here . q = pd.
好的,我知道之前有人用一个有限的缩放示例问过这个问题 [-1, 1]间隔 [a, b] Different intervals for Gauss-Legendre quadrature in num
案例:我们有一个运行 bash 脚本的 docker 容器,该脚本需要永远“阻塞”(因为它为另一个容器公开了一个卷,但有时我们需要这样做还有其他原因)。 我当时认为这可以工作: exec sleep
我是一名优秀的程序员,十分优秀!