原创 强制类型转换的重要性

2010-10-14 16:46 1870 8 8 分类: MCU/ 嵌入式

今天调试PIC18系列单片机,其中有一个大数(亿级别),这个数的精度非常的差。例如1234567890,往往高五位显示正确,低五位就乱七八糟。查了半天,最终强制转换一下类型,就OK了。


这样不行:


tmpF1= ((comstat2.rbuf[i+14]-0X30)*100000) \
        + ((comstat2.rbuf[i+15]-0X30)*10000) \
        + ((comstat2.rbuf[i+16]-0X30)*1000) \
        + ((comstat2.rbuf[i+17]-0X30)*100) \
        + ((comstat2.rbuf[i+18]-0X30)*10) \
        + ((comstat2.rbuf[i+19]-0X30)) \


 


需要强制转换一下类型:


tmpF1= ((comstat2.rbuf[i+14]-0X30)*100000L) \
        + ((comstat2.rbuf[i+15]-0X30)*10000L) \
        + ((comstat2.rbuf[i+16]-0X30)*1000L) \
        + ((comstat2.rbuf[i+17]-0X30)*100L) \
        + ((comstat2.rbuf[i+18]-0X30)*10L) \
        + ((comstat2.rbuf[i+19]-0X30)) \


需要自己反省的地方很多。串口接收确认正确,显示驱动确认正确,已经肯定问题出在这个计算的过程了,但自己还是首鼠两端,怀疑这怀疑那的。任何时候头脑的不清醒,将直接影响所处理的事情。应该吸取教训啊!

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /2 下一条