我正在编写一些函数,这些函数会将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/

10-11 18:16