Rar*_*rge 10 c++ floating-point signedness
有没有一种简单的方法来确定浮点数的符号?
我进行了实验并想出了这个:
#include <iostream>
int main(int argc, char** argv)
{
union
{
float f;
char c[4];
};
f = -0.0f;
std::cout << (c[3] & 0x10000000) << "\n";
std::cin.ignore();
std::cin.get();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
其中(c [3]&0x10000000)为负数给出的值> 0但我认为这要求我做出以下假设:
如果任何这些假设错误或者我错过了任何假设,请纠正我.
Jam*_*lis 10
假设它是一个有效的浮点数(而不是,例如,NaN):
float f;
bool is_negative = f < 0;
Run Code Online (Sandbox Code Playgroud)
它留给读者练习,以弄清楚如何测试浮点数是否为正.
Vla*_*lad 10
尝试
float s = copysign(1, f);
Run Code Online (Sandbox Code Playgroud)
从 <math.h>
另一个有用的东西可能是#including <ieee754.h>,如果它在您的系统/编译器上可用.
使用math.h中的signbit().
| 归档时间: |
|
| 查看次数: |
30811 次 |
| 最近记录: |