我正在编写一些函数,这些函数会将float / double转换为定点然后返回。有谁知道确定用于float或double指数部分的位数的最佳方法?我希望使用std::numeric_limits中的内容,但是没有运气。
指数部分是由C++标准定义的还是特定于编译器/机器的?还是在运行时会有所不同?
最佳答案
如果该平台上的float
是按照IEC-559(在美国也称为IEEE 754)编码的,则它将始终为8位。如果该平台的double
是用IEC-559(或任何64位版本)编码的,则它将始终为11。否则,您甚至无法假设它存储了该指数。
虽然标准未指定应以哪种格式存储浮点数,但在C++ 11(和C++ 03?)中,您可以使用float
(其中double
是一个浮点类型):
#include <limits>
cout << "float is IEC-559? " << numeric_limits<float>::is_iec559 << endl
<< "double is IEC-559? " << numeric_limits<double>::is_iec559 << endl;
关于c++ - 指数使用多少位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8837976/