2016-04-03 87 views
1

我遇到了一个问题,一个大浮在C#代码,我需要转换为int32转换大浮到整数

int test = (int)199999900f; 

测试最终被设置为199999904.

灿任何人都可以解释这里发生了什么,为什么我在这一行代码中获得4的转换?

回答

2

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

如果你的数字是一个常数,就像例子中所示的那样,你根本不应该使用ny float,而只是把它作为一个int。