通过std::numeric_limits
可以得到long double
、最小值等各种信息,通过sizeof(long double)
可以得到内存的使用情况。
但是long double
的有效字节/位数在C++标准中没有规定,它可能是80/96/128或其他,那么是否有一种编译时方法来获得有效位长度?
便携式方法更好。
void dump(auto x)
{
auto vss = bit_cast<bitset<sizeof(x) * 8>>(x);
cout << vss.to_string().substr(0, 48) << ' ' << vss.to_string().substr(48) << endl;
}
int main(int argc, char const *argv[])
{
long double x = 0;
dump(x);
dump(-x);
return 0;
}
在x86-64上,你会看到只有第79位被翻转了,所以128位中只有80位是有效的。
2条答案
按热度按时间yhxst69z1#
编译时解决方案。
ippsafx72#
仅仅数零件还不够吗?
沿着这条线