当前位置: 首页 > 编程语言 > C#

float.MaxValue转Long会抛出异常?分享

时间:2023-04-10 23:09:35 C#

将float.MaxValue转换为Long抛出异常?试图获取float.MaxValue的整数部分但它抛出错误?longl=Convert.ToInt64(float.MaxValue);控制台.WriteLine(l);错误:算术运算导致溢出。float的最大值是3.4E+38,long的最大值是9.2E+18。因此,float.MaxValue不适合long。当您指定的值大于Int64.MaxValue或小于Int64.MinValue时,Convert.ToInt64方法会抛出OverflowException。如果你只想获取float.MaxValue的整数值,请参阅此问题的相关答案。但是请注意,即使剥离了浮点数,浮点数的最大值仍然不适合long数据类型。编辑:float(32位值)的最大值高于long(64位值)的原因是由于计算机内部表示浮点数的方式。浮点值类型可以包含比定点和整数类型更广泛的值,尽管这个更大的范围是以牺牲精度为代价的。虽然float是比long(8字节)更小(4字节)的结构,但它的范围确实更广。(编辑:作为对“为什么”的回应,您可能想阅读每位计算机科学家应该了解的浮点运算知识。与大多数整数类型不同,它们的范围不等于2^Bits。)float.MaxValue~=3.402823+e38long.MaxValue~=9.223372+e18显然,float.MaxValue的组件不能表示为long。(更不用说为该精度使用如此大的单精度浮点数通常是完全没有意义的事实)。现在,你可以尝试在这里使用System.Numerics.BigInteger(使用适当的构造函数),如果你真的想用整数类型表示它,但没有进一步的信息,我严重怀疑你真的需要对数字进行这种大整数运算.如果您只需要以定点表示法显示数字,则可以使用适当的格式说明符://output:"340282300000000000000000000000000000000"Console.WriteLine(float.MaxValue.ToString("F0"));在.Net4中有一个新的BigInteger类型可以处理这个大小。MSDNonfloatingpointconversions另请注意,没有从浮点类型到long的隐式转换。您可以在Int64上使用TryParse方法。如果失败,则只使用浮点数的整数部分:Int64.Parse(s.Substring(s.IndexOf(".")+1));以上是C#学习教程:将float.MaxValue转为Long会抛出异常?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: