mar*_*nus 6 c++ floating-point floating-accuracy notation ieee-754
我想将1.0以下最接近的数字作为浮点数.通过阅读维基百科上的文章IEEE-754我已经设法找出1.0二进制表示3FF0000000000000,所以最接近的双值实际上是0x3FEFFFFFFFFFFFFF.
我知道使用这个二进制数据初始化double的唯一方法是:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
Run Code Online (Sandbox Code Playgroud)
使用起来相当麻烦.
有没有更好的方法来定义这个双号,如果可能的话,作为常量?
十六进制浮点数和双重文字确实存在.语法是0x1.(尾数)p(十进制的指数)在你的情况下语法是
double x = 0x1.fffffffffffffp-1
Run Code Online (Sandbox Code Playgroud)