waf*_*man 2 c++ floating-point fixed-point
我正在编写一些函数,将float/double转换为定点和后退.有没有人知道确定浮点数或双精度指数部分的位数的最佳方法?我希望使用std :: numeric_limits中的东西,但没有运气.
指数部分是由C++标准定义的还是编译器/机器特定的?或者它可以在运行时变化?
如果float在该平台上用IEC-559(在美国称为IEEE 754)编码,那么它将始终是8位.如果该double平台的编码使用IEC-559(或64位版本),则它将始终为11.如果不是,那么您甚至不能假设它存储指数.
而标准不指定应保存什么格式浮点数,在C++ 11(和C++ 03?),你可以测试是否float或double使用符合IEC-559 numeric_limits<T>::is_iec559(其中T一个浮点型):
#include <limits>
cout << "float is IEC-559?  " << numeric_limits<float>::is_iec559 << endl
     << "double is IEC-559? " << numeric_limits<double>::is_iec559 << endl;