在基于C#的网络通讯中,上位机将有发送的浮点数f转换为16进制数
float f = 1.2f
string s = BitConverter.ToString(BitConverter.GetBytes(f)).Replace( "- ", " ")
在C#中,下位机返回的16进制浮点数,先去除数据“FF FF FF FF”中的空格,
再按2个字符一截取的转换为十进Byte数组后用BitConverter.ToSingle()方法将数据转换为f1,fi.ToString()转换字符串。
//s = s.Replace( " ", " ")//如果中间有空格
byte[] arr = new byte[s.Length / 2]
for (int i = 0i <s.Length / 2i++)
{
arr[i] = Convert.ToByte(s.Substring(i * 2, 2), 16)
}
float f1 = BitConverter.ToSingle(arr, 0)
Text = f1.ToString()
输出1位:因为
float
本来就是单精度的!
输出1位正常!不过通常带有
12.2f
1.float
它最多只能保存
7位有效数字!2.两个float相乘结果为float
3.乘数中只要有一个数为double,结果也有double
4.实数在计算机是以浮点数的形式表示的。所以要看它的实际二进制的编码方式