我遇到了一个问题,我需要将C#代码中的大型浮点数转换为int32
:
int test = (int)199999900f;
测试最终设置为199999904。
有人能解释一下这里发生了什么,为什么我在这一行代码中获得了4次转换?
答案 0 :(得分:2)
Float只有有限的存储空间(依赖于实现,可能是32位),所以你超过了它。基本上,第9位数不能再存储在浮点数中。 你应该使用Double而不是float,这会给你更多的空间。
如果你的数字是一个常数,如示例中所示,你根本不应该使用ny float,而只是将它保留为int。