Java中的浮点类型
浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型:
float 4字节 大约±3.402 823 47E+38F (有效位数为6~7位)
double 8字节 大约±1.797 693 134 862 315 70E+308(有效位数为15位)
double表示这种类型的数值精度是float类型的两倍(有人称之为双精度数值)。绝大部分应用程序都采用double类型。在很多情况下,float类型的精度很难满足需求。实际上,只有很少的情况适合使用float类型,例如,需要单精度数据的库,或者需要储存大量数据。
float类型的数值有一个后缀F或f(例如,3.14F)。没有后缀F的浮点数值(如3.14)默认为double类型,当然,也可以在浮点数值后面添加后缀D或的(例如,3.14D)。
所有的浮点数值计算都遵循IEEE 754规范。具体来说,下面是用来表示溢出和出错情况的三个特殊的浮点数值:
-
正无穷大
-
负无穷大
-
NaN(不是一个数字)
例如,一个正整数除以0的结果为正无穷大。计算0/0或者负数的平方根结果为NaN。
常量Double.POSITIVE_INFINITY、Double.NEGATIVE_INFINITY 和 Double.NaN(以及相应的Float类型的常量)分辨表示这三个特殊的值,但在实际应用中很少遇