使用大值时,将float转换为int的值不正确?

时间:2019-11-14 14:18:31

标签: c# wpf

我正在从用户的文本框中输入内容。使用以下行将该值转换为浮点数:

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时,它将溢出并给出负值。

1 个答案:

答案 0 :(得分:1)

the docs中,float的精度约为6-9位数。

您看到第9位数字有所不同。这并不意外。您可能需要使用double(精度为〜15-17位数字)或decimal(精度为28-39位数字(但范围较小))。