float.Parse("99999999")结果为100000000,float最大能表示的整数是多少?

mademelaugh 2008-01-29 02:53:08
rt
...全文
1424 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lineloveqq 2008-06-22
  • 打赏
  • 举报
回复
最后回复的的确是好文啊……
Q_282898034 2008-01-29
  • 打赏
  • 举报
回复
float 关键字表示存储 32 位浮点值的简单类型。下表显示了 float 类型的精度和大致范围。

类型 大致范围 精度 .NET Framework 类型
float
±1.5 × 10-45 to ±3.4 × 1038
7 位
System.Single


标识符
默认情况下,赋值运算符右侧的实数被视为 double。因此,应使用后缀 f 或 F 初始化浮点型变量,如下所示:

复制代码
float x = 3.5F;


如果在以上声明中不使用后缀,则会因为您试图将一个 double 值存储到 float 变量中而发生编译错误。

转换
可在一个表达式中兼用数值整型和浮点型。在此情况下,整型将转换为浮点型。根据以下规则计算表达式:

如果其中一个浮点型为 double,则表达式的计算结果为 double 类型,在关系表达式或布尔表达式中为 bool 类型。

如果表达式中不存在 double 类型,则表达式的计算结果为 float 类型,在关系表达式或布尔表达式中为 bool 类型。

浮点表达式可以包含下列值集:

正零和负零

正无穷和负无穷

非数字值 (NaN)

有限的非零值集

有关这些值的更多信息,请参考“二进制浮点算法的 IEEE 标准”,该标准可在网站 http://www.ieee.org/ 上获得。

=================================================

Single 值类型表示一个值介于 -3.402823e38 和 +3.402823e38 之间的单精度 32 位数字,以及正零或负零、PositiveInfinity、NegativeInfinity 和非数字 (NaN)。

Single 符合二进制浮点算法的 IEC 60559:1989 (IEEE 754) 标准。

Single 为比较此类型的实例,将实例的值转换为它的字符串表示形式以及将数字的字符串表示形式转换为此类型的实例提供了相应的方法。有关格式规范代码如何控制值类型的字符串表示形式的信息,请参见 格式化概述、标准数字格式字符串 和 自定义数字格式字符串。

使用浮点数
在执行二进制运算时,如果一个操作数为浮点类型(Single 或 Double),那么另一个操作数应当为整数类型或浮点类型。此运算计算如下:

如果其中一个操作数为整数类型,那么该操作数将被转换为另一个操作数所属的浮点类型。

然后,如果任意一个操作数为 Double,则另一个操作数将被转换为 Double,并且至少使用 Double 的范围和精度执行运算。对于数值运算,结果的类型为 Double。

否则,将至少使用 Single 类型的范围和精度执行运算,而且对于数值运算,结果的类型为 Single。

浮点运算符(包括赋值运算符)不会引发异常。在异常情况下,浮点运算的结果为零、无穷或 NaN,如下所述:

如果浮点运算的结果对于目标格式来说太小,则运算的结果为零。

如果浮点运算结果的数值对于目标格式来说太大,则运算的结果为 PositiveInfinity 或 NegativeInfinity(具体取决于结果的符号)。

如果浮点运算无效,则运算的结果为 NaN。

如果浮点运算的一个或两个操作数为 NaN,则运算的结果为 NaN。

请记住,浮点数只能近似于十进制数字,浮点数的精度决定了浮点数近似于十进制数字的精确程度。默认情况下,Single 值只包含 7 位精度,但内部维护的最大精度是 9 位。浮点数的精度有几种结果:

特定精度下看似相等的两个浮点数可能并不相等,因为它们的最小有效位数不同。

由于浮点数可能无法精确近似于十进制数,如果使用十进制数,则使用浮点数的数学或比较运算可能不会产生相同的结果。

如果涉及浮点数,值可能不往返。值的往返是指,某个运算将原始浮点数转换为另一种格式,而反向运算又将转换后的格式转换回浮点数,且最终浮点数与原始浮点数相等。由于一个或多个最低有效位在转换中丢失或更改,往返可能失败。

mademelaugh 2008-01-29
  • 打赏
  • 举报
回复
有没有什么转换方法可以避免这种精度损失?
tds__609 2008-01-29
  • 打赏
  • 举报
回复
TNT_1st_excellence 2008-01-29
  • 打赏
  • 举报
回复
也有说取值范围是-3.4*10(-38)~3.4*10(38)
yuan731 2008-01-29
  • 打赏
  • 举报
回复
mark
TNT_1st_excellence 2008-01-29
  • 打赏
  • 举报
回复
float类型通常32位,取值范围是10-38~10+38
he_8134 2008-01-29
  • 打赏
  • 举报
回复
浮点有误差~~

111,092

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧