第04部分:浮点数类型

如题所述

第1个回答  2022-06-15
在Java中,实数使用float和double数据类型表示。float类型是32位单精度浮点数,double类型是64位双精度浮点数。这两种类型都符合IEEE 754-1985标准。这个标准规定了浮点数的格式和运算方式。

浮点数可以以字面量的形式写在Java程序中,其格式为一些可选数字,后面跟一个小数点和一些数字,例如:

浮点数字面量还可以使用指数形式(科学计数法)表示。其格式为一个数后面跟着字母e或者E和一个数,第二个数表示10的次方,是第一个数的乘数。例如:

默认情况下,浮点数都是double类型,若想在程序中使用float类型,要在数字后面加上f或者F,例如:

浮点数字字面量不能使用十六进制,二进制或者八进制表示。

由于本质上的限制,大多数实数都不能使用有限的位数进行精确表示,因此要记住,float和double类型都只能表示实际值的近似值。float类型是32位近似值,至少有6个有效数字,double是64位近似值,至少有15个有效数字。

除了表示普通的数字之外,float和double还能表示四个特殊的值:正无穷大,负无穷大,零和NaN。如果浮点数运算的结果超出了float或double能表示的范围上线得到的是无穷大。如果浮点数的运算结果超出了float或double能表示的范围下限,得到的是零。

Java的浮点类型区分正零和负零,具体是哪个值取决于从哪个方向出现的下溢,在实际使用中,正零和负零的表现基本一样。最后一种特殊的浮点数NaN,是“Not-a-Number”的简称,表示“不是数字”。如果浮点数运算不合法,例如0.0/0.0,得到的就是NaN,例如:

Java浮点数类型能处理到无穷大的上溢以及到零的下溢,因此浮点数运算从不抛出异常,就算执行非法运算也没事,例如零除以零,或者计算负数的平方根。

float和double基本类型都有对应的包装类,分别为Float和Double。这两个类都定义了一些有用的常量,如:MIN_VALUE、MAX_VALUE、NEGATIVE_INFINITY、POSITIVE_INFINITY 和 NaN。

无穷大浮点数的表现和设想的一样,例如,无穷大之间的加减运算得到的还是无穷大,负零的表现几乎和正零一样。而且实际上,相当判断运算符==会告诉你,负零和正零是相等的,区分正零和负零还有普通的零有一种方法,把它作为被除数:1.0/0.0得到的是正无穷大,但是1.0/负零得到的是负无穷大。因为NaN不是数字,所以==运算符会告诉我们它不等于任何其它数字,甚至包括它自己,若是想检查某个float或者double值是否为NaN,必须使用 Float.isNaN() 或 Double.isNaN() 方法。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网