我正在从用户的文本框中输入内容。使用以下行将该值转换为浮点数:
float x = float.Parse(txt1.Text) * 8;
然后使用以下行将float变量转换为整数:
int switchOnDelayValue = (int)Math.Round(x);
然后,我使用以下命令将整数转换为十六进制等效字符串:
valueToString = Convert.ToString(switchOnDelayValue, 16).PadLeft(8, '0');
从float到int的转换对大多数值都适用,除了一些接近int最大值的值。例如,当我输入值268,435,455
float x = float.Parse(txt1.Text) * 8
x 现在应该存储 2,147,483,640 。但是,浮点型将值存储为 2.14748365E + 09 。当float转换为int时,它将溢出并给出负值。
答案 0 :(得分:1)
在the docs中,float
的精度约为6-9位数。
您看到第9位数字有所不同。这并不意外。您可能需要使用double
(精度为〜15-17位数字)或decimal
(精度为28-39位数字(但范围较小))。