最佳答案
在 <math.h>
double frexp (double value, int *exp)
将 VALUE 分解为指数和尾数。
double ldexp (double value, int exp)
反之。
要获得一个整数值,您必须将 frexp 的结果乘以 FLT_RADIX 指数 DBL_MANT_DIG(这些在 <float.h>
中可用。要将其存储在整数变量中,您还需要找到一个合适的类型(通常是 64位类型)
如果您想处理某些实现提供的 128 位长 double,则需要 C99 frexpl 进行拆分,然后您可能没有足够的整数类型来存储完整结果。
关于c++ - 如何提取 double 的尾数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5672960/