前端之家收集整理的这篇文章主要介绍了
c – 将double常量定义为十六进制?,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想将1.0以下最接近的数字作为浮点数.通过阅读维基百科在
IEEE-754的
文章,我已经设法发现1.0的二进制表示是3FF0000000000000,所以最接近的double值实际上是0x3FEFFFFFFFFFFFFF.
我知道使用这个二进制数据初始化double的唯一方法是:
double a;
*((unsigned*)(&a) + 1) = 0x3FEFFFFF;
*((unsigned*)(&a) + 0) = 0xFFFFFFFF;
使用起来相当麻烦.
有没有更好的方法来定义这个双号,如果可能的话,作为常量?
十六进制浮点数和双重
文字确实存在.
语法为0x1.(尾数)p(十进制指数)
在你的情况下,语法将是
double x = 0x1.fffffffffffffp-1
原文链接:https://www.f2er.com/c/117156.html