将大浮点数转换为整数

时间:2016-04-03 19:10:55

标签: c# type-conversion

我遇到了一个问题,我需要将C#代码中的大型浮点数转换为int32

int test = (int)199999900f;

测试最终设置为199999904。

有人能解释一下这里发生了什么,为什么我在这一行代码中获得了4次转换?

1 个答案:

答案 0 :(得分:2)

Float只有有限的存储空间(依赖于实现,可能是32位),所以你超过了它。基本上,第9位数不能再存储在浮点数中。 你应该使用Double而不是float,这会给你更多的空间。

如果你的数字是一个常数,如示例中所示,你根本不应该使用ny float,而只是将它保留为int。