具有IEEE754单精度分辨率的C#NumericUpDown

问题描述

我希望能够在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);