今天调试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条评论)
登录后参与讨论