如何在C#中将整数999999999转换为float 999999999.0而不是1000000000.0?

Sun*_*ung -2 c# floating-point int type-conversion data-conversion

在C#中,要将int转换为float,我们只需要执行类似float floatNumber = intNumber或者Convert.ToSingle(intNumber).但是,当涉及999999999这样的大数字时,系统无法正确转换数字,而是将其转换为不需要的数字1E + 09.现在的问题是,是否可以将该大整数转换为所需的浮点数?

dav*_*bak 6

32位浮点数不能精确地表示一个大的整数:它只有24位用于执行此操作(一种是隐式的格式).在24位中,您可以表示16777215. 16777216也适合,因为它是2的幂.999999999不能完全表示为最多24位乘以2的幂的数字.

请参阅SO:https://stackoverflow.com/a/3793950/751579

有关更多信息,请查看IEEE浮点32位和64位格式的详细信息.