c# - 将 float.MaxValue 转换为 Long 会抛出异常?

标签 c# .net

试图获取 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/

相关文章:

c# - 了解 WCF Windows 身份验证

c# - 从 WebBrowser 控件复制

c# - EF 迁移中的自定义代码执行

c# - 返回的数据类型因表中的数据而异

c# - 找不到类型或命名空间名称 'ServiceController'

c# - 查询 "Memory"的 LINQ

c# - 如何在 Excel 中获取选定的工作表名称

c# - PDFsharp MigraDoc 字体在 Azure Web App 中不起作用

c# - 是否有退出 explorer.exe 的 "Legal"API?

c# - NullReferenceexception后收到access violation exception(0xc0000005)是否正常