看了一篇关于C/C++浮点数的博文,在Win32下,把int, 指针地址,long等4字节整数赋给一个double后,再用该double数赋给原始类型的数,得到的结果于最初的数值一致,即不存在任何精度丢失。例如下面的结果将总是true:
long a=123456; //assign any long number here double db=a; long b=db; printf("%s\n",a==b?"true":"false");
但是对于long long或win64下的指针地址等8字节整数将存在精度丢失,于是对这方面做了一个简单的测试:
#include<iostream> #include<stdlib.h> void showEncodeOfDouble(unsigned char* db){ const int ByteLength=8; for(int i=ByteLength-