一直都知道double的存儲格式是IEEE制定的標準,可是歷來沒有看到C++中double是怎麼存的。 測試
今天突發奇想,想看看double在C++是怎麼存儲的。找了好久發現能夠用union輕鬆的完成。 spa
union Double2Int { double d; unsigned __int64 i; };
可是,想要輸出的時候又要費一番功夫。緣由是%x只支持32位的十六進制輸出。 code
輸出64位十六進制須要用到%llx。 io
最後給出,測試代碼。 class
#include <stdio.h> union Double2Int { double d; unsigned __int64 i; }; int main() { Double2Int d2i; d2i.d = -1; printf("double : %lf\tHex : %llx\n", d2i.d, d2i.i); return 0; }