棘手,想不通!关于判断数据末尾5数据显示的有关问题~

棘手,想不通!关于判断数据末尾5数据显示的问题~~~~~~~
单片机发送的是二进制代码,数据定义是这样的
6nib二进制数据,nib0--5,其中nib0--4为数据,nib5为符号与公英制指示,发送顺序定义:

LSB__________________________MSB
nib0 nib1 nib2 nib3 nib4 nib5
0123 0123 0123 0123 0123 0xx3

nib5 bit0:"0"表示正数,"1"表示负数,bit3:"0"表示公制单位mm,最小单位0.01mm,"1"表示英制iich,最小单位0.0005inch,x表示无效

问题:
因为是二进制代码,但是我的串口调试工具是只有16进制显示的,不知道这个有没有影响

量具上面显示的数据是027
调试工具接收到是 +000069 
十六进制显示是 2B 00 30 30 30 30 36 39 0D 12
量具上面显示的数据是027.5
调试工具接收到是 +00006: 
十六进制显示是 2B 00 30 30 30 30 36 3A 0D 12
量具上面显示的数据是028
调试工具接收到是 +000071 
十六进制显示是 2B 00 30 30 30 30 37 31 0D 12
量具上面显示的数据是028.5
调试工具接收到是 +000072 
十六进制显示是 2B 00 30 30 30 30 37 32 0D 12
量具上面显示的数据是029
调试工具接收到是 +000074 
十六进制显示是 2B 00 30 30 30 30 37 34 0D 12
量具上面显示的数据是029.5
调试工具接收到是 +000075 
十六进制显示是 2B 00 30 30 30 30 37 35 0D 12
量具上面显示的数据是030
调试工具接收到是 +000076 
十六进制显示是 2B 00 30 30 30 30 37 36 0D 12

从这些数据可以看出来数据69转换成公制的是69/25.4=2.716 显示数据是027
  6:转换成公制的是70/25.4=2.756 显示数据是027.5
  71转换成公制的是71/25.4=2.795 显示数据是028
  72转换成公制的是72/25.4=2.835 显示数据是028.5
奇怪的是我在28.5-29之间慢慢调了几次都没有73出来,不过应该有的只是很难找到所以用73来转应该也是显示028.5比72精确
  74转换成公制的是74/25.4=2.913 显示数据是029
  75转换成公制的是75/25.4=2.953 显示数据是029.5
  76转换成公制的是76/25.4=2.992 显示数据是030
现在如果是按照直接转换的就是跟显示的有点区别 那就算是量具显示是10倍 ,还有前面加满位数(补0).
如69 显示027 实际数据是2.716 
现在我弄不明白的是那个位数5 是什么时候显示出来的 ,如果我直接用接收上来的数据除以进制的话再乘以10尾数就不对了
现在我想要的是想像它那样有5就显示,没有就不显示,是这样的格式 000.0
  量具数据显示030
我的代码Text1.Text = FormatNumber(Val(Left$(data, 1) & "1") * Val(Right$(data, 6)) / 2.54, 1, vbTrue)
  显示的是 29.9
应该怎么改???????
另外我想到的是因为它发送的是二进制代码 判断的时候应该是在二进制的 所以我这样是不对的~~~~晕

.



------解决方案--------------------
估计是整数和单精度转换出bug了....一般在得出整数的时候你就转换成CSng....
------解决方案--------------------
大概量具的显示精度为 0.5,所以按照 0.5 取整
VB code
Dim v As Double
v = Round(Val(Data) / 2.54 * 2) / 2
Text1.Text = Format(v, "000.#")