试图获取 float.MaxValue 的整数部分但它抛出错误?
long l = Convert.ToInt64(float.MaxValue);
Console.WriteLine(l);
错误: 算术运算导致溢出。
最佳答案
float
的最大值是3.4E+38,而a的最大值long
是 9.2E+18。因此,float.MaxValue
将不适合 long
。
Convert.ToInt64
当您指定的值大于 Int64.MaxValue
或小于 Int64.MinValue
OverflowException
如果只想得到float.MaxValue
的整数值,请看this question的相关回答.但请注意,即使去除了 float ,float
的最大值仍然不适合 long
数据类型。
编辑 float
(32 位值)的最大值高于long
(64 位值)的原因位值)是因为 float 在计算机内部表示的方式。与定点和整数类型相比,浮点值类型可以容纳更广泛的值,尽管这种更大的范围是以牺牲精度为代价的。
关于c# - 将 float.MaxValue 转换为 Long 会抛出异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4232590/