首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

doule 型数据为何会出来负数

2013-04-09 
doule 型数据为什么会出来负数?Data.sqrt_A (((EphBuffer[22]&0x03)*16+EphBuffer[23])*256*256*256*4 +(

doule 型数据为什么会出来负数?
Data.sqrt_A =(((EphBuffer[22]&0x03)*16+EphBuffer[23])*256*256*256*4 +((EphBuffer[26]&0x03)*256*256*16+EphBuffer[27]*256*256+EphBuffer[28]*256*16+EphBuffer[29]*256+EphBuffer[30]*16+EphBuffer[31])*16 +((EphBuffer[34]&0x03)*16+(EphBuffer[35]&0x0c))/4)*pow(2.0,-19);
结果是:-1698.5256347656250
显然是一个错误的结果,sqrt_A是double型的,
EphBuffer[22]=3
EphBuffer[23]=2

EphBuffer[26]=14
EphBuffer[27]=14
EphBuffer[28]=11
EphBuffer[29]=12
EphBuffer[30]=11
EphBuffer[31]=8

EphBuffer[34]=12
EphBuffer[25]=3

输出的应该是一个正数的,是不是和数据结构有关,求大神指教


数据结构 c
[解决办法]

引用:
引用:我不是什么大神,不过这个应该是数太大,溢出了。计算机的数都是定长的了,你往这方面查查就知道了。怎么解决呢?


可以google一下“c++大数运算”吧。
[解决办法]
你先只看这一个式子的运行结果
(EphBuffer[26]&0x03)*256*256*16
在我的机器上
int EphBuffer[40];

    EphBuffer[26]=14;
    printf("%f", (EphBuffer[26]&0x03) * 256 * 256 * 16 * 16);

结果是0.000000
解决方法的话,如果知道你要做什么,或许可以换一个思路,或者用他们说的大数。

热点排行