ieee754
我现在在开发一个项目,其中有一个要获取艾默生UPS电压电流等数据。
根据厂家提供的协议返回的数据,怎么计算都不对,可能是我算的有误。例如‘交流输出电流A’,我在现场看机器数据为219.9V,返回的16进制内容其中的一段对应的‘交流输出电流A’是3636453635423433(数据较长,但是根据文档中说明该UPS浮点数据都根据IEEE754标准,此段数据应该是正确的,也就是说此段16进制数对应的浮点数据为219.9)。但是我自己计算时数据却差太多了,不知道是我计算错误还是返回数据有问题(应该是我的问题),有懂的大神们给解答下,谢谢。
附:IEEE754标准公式
16进制转换10进制浮点工具计算结果:
我的计算过程:
3636453635423433
66E65B43
1101101110110101101110011
01100110111001100101101101000011
符号位(S)=0
阶码(E)=11001101
尾数(M)=11001100101101101000011
符号位(S)=0
阶码(E)=205
尾数(M)=6708035
套用浮点数值公式:±(1+M*2的负23次方)*2的(E-127)次方
±(1+6708035*0.00000011920928955078125)*2的78次方
±(1+0.79966008663177490234375)*302231454903657293676544
±(1.79966008663177490234375)*302231454903657293676544
=±543913886314763254759424
=±5.4
备注:2的-1次方=1除以2的1次方
我的结果等于+5.4,工具计算结果=+2.7,机器上显示+219.9==我表示很无奈。。ieee754求大神们解答。多谢
我使用C#程序开发的,C++不会==
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-30020-1.html
5毛钱都不给我