问题描述
我希望能够在C#中构造一个numericupdown字段,其中在每个箭头上单击时,该字段中的值都会增加一个分辨率。
例如;
假设我的值为20.0,它的IEEE754十六进制表示形式为0x41a00000。
如果我单击向上箭头按钮,我想查看0x41a00001的十进制表示形式,即20.0000019073
同样,如果单击向下箭头,则应该看到19.9999980927。
我尝试将numericupdown的Increment属性设置为0.0000019073,但是我认为该值在IEEE754中不是恒定的。
简而言之,如果该值为700.0,则其IEEE754表示形式为0x442f0000,但是0x442f0001对应于700.000061035,因此在这种情况下,它的增量为0.000061035,而不是0.0000019073。
谢谢。
解决方法
使用类似以下的内容:
float start = 20.0F;
byte[] bytes = BitConverter.GetBytes(start);
int integer = BitConverter.ToInt32(bytes,0);
string hex = integer.ToString("X8");
integer++;
string hex2 = integer.ToString("X8");
byte[] bytes2 = BitConverter.GetBytes(integer);
float end = BitConverter.ToSingle(bytes2,0);