| 发表于:2008-01-18 18:37:372楼 得分:0 |
如果要最简单的处理方式: #include "stdafx.h" #include "memory.h" void tolong(double r, long& a, long& b) { char buffer[sizeof(double)]; memcpy(buffer, &r, sizeof(double)); memcpy(&a, buffer, sizeof(long)); memcpy(&b, buffer+sizeof(long), sizeof(long)); } void todouble(double& r, long a, long b) { char buffer[sizeof(double)]; memcpy(buffer, &a, sizeof(long)); memcpy(buffer+sizeof(long), &b, sizeof(long)); memcpy(&r, buffer, sizeof(double)); } int main(int argc, char* argv[]) { double r = 1.719e18; long a = 0; long b = 0; tolong(r, a, b); double rr = 0; todouble(rr, a, b); printf("%f", r - rr); return 0; } 如果要解决负数,请把上面的long类型全换成unsigned long | | |
|