- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
正如标题所说,我所追求的功能是由 C++11 的数学库提供的,用于查找下一个指向特定值的浮点值。
除了从 std 库中提取代码(我可能不得不求助于它)之外,还有其他方法可以使用 C++03(使用 GCC 4.4.6)执行此操作吗?
最佳答案
依赖于平台,假设 IEEE754 和模字节顺序,您可以将 float 的数据存储在一个整数中,递增 1,然后检索结果:
float input = 3.15;
uint32_t tmp;
unsigned char * p = reinterpret_cast<unsigned char *>(&tmp);
unsigned char * q = reinterpret_cast<unsigned char *>(&input);
p[0] = q[0]; p[1] = q[1]; p[2] = q[2]; p[3] = q[3]; // endianness?!
++tmp;
q[0] = p[0]; q[1] = p[1]; q[2] = p[2]; q[3] = p[3];
return input;
当然要小心零、NaN 和无穷大。
关于c++ - 替代 C++11 的 std::nextafter 和 std::nexttoward for C++03?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16335992/
为什么以下代码在每次 std::nexttoward 函数调用时返回相同的数字? #include #include #include int main() { std::cout.pr
nextafter(和nexttoward)这个奇特的接口(interface)背后究竟是什么原因functions ?我们通过指定要朝向 移动的值来指定方向。 乍一看,这个想法背后似乎隐藏着一些不明
C++ 2011标准库的nextafter和nexttoward函数有什么区别? 最佳答案 由于函数源自 C,它们不能被重载,这意味着函数有两个不同的名称,但具有不同的参数(-type)。以下是原始签
正如标题所说,我所追求的功能是由 C++11 的数学库提供的,用于查找下一个指向特定值的浮点值。 除了从 std 库中提取代码(我可能不得不求助于它)之外,还有其他方法可以使用 C++03(使用 GC
使用 C 或 C++,我想在一个循环中递增所有可表示的 32 位 float 的范围,类似于您递增 32 位整数表示的所有不同值的方式。 类似于:对于( float f = FLOAT_MIN;f
我是一名优秀的程序员,十分优秀!