gpt4 book ai didi

c++ - 替代 C++11 的 std::nextafter 和 std::nexttoward for C++03?

转载 作者:太空狗 更新时间:2023-10-29 21:24:23 29 4
gpt4 key购买 nike

正如标题所说,我所追求的功能是由 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com