站内搜索: 请输入搜索关键词
当前页面: 在线文档首页 > JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

Float (Java 2 Platform SE 5.0) - JavaTM 2 Platform Standard Edition 5.0 API 规范中文版

JavaTM 2 Platform
Standard Ed. 5.0

java.lang
类 Float

java.lang.Object
  继承者 java.lang.Number
      继承者 java.lang.Float
所有已实现的接口:
Serializable, Comparable<Float>

public final class Float
extends Number
implements Comparable<Float>

Float 类在对象中包装了一个 float 基本类型的值。Float 类型的对象包含一个 float 类型的字段。

此外,此类提供了几种方法,可在 float 类型和 String 类型之间互相转换,并且还提供了处理 float 类型时非常有用的其他一些常量和方法。

从以下版本开始:
JDK1.0
另请参见:
序列化表格

字段摘要
static float MAX_VALUE
          保持 float 类型的最大正有限大值的常量,最大正有限大值为 (2-2-23)·2127
static float MIN_VALUE
          保持 float 类型数据的最小正非零值的常量,最小正非零值为 2-149
static float NaN
          保持 float 类型的非数字 (NaN) 值的常量。
static float NEGATIVE_INFINITY
          保持 float 类型的负无穷大值的常量。
static float POSITIVE_INFINITY
          保持 float 类型的正无穷大的常量。
static int SIZE
          表示一个 float 值所使用的位数。
static Class<Float> TYPE
          表示 float 基本类型的 Class 实例。
 
构造方法摘要
Float(double value)
          构造一个新分配的 Float 对象,它表示转换为 float 类型的参数。
Float(float value)
          构造一个新分配的 Float 对象,它表示基本的 float 参数。
Float(String s)
          构造一个新分配的 Float 对象,它表示用字符串表示的 float 类型的浮点值。
 
方法摘要
 byte byteValue()
          返回这个 Float 值对应的 byte 值(它被强制转换为一个 byte)。
static int compare(float f1, float f2)
          比较两个指定的 float 值。
 int compareTo(Float anotherFloat)
          从数字上比较两个 Float 对象。
 double doubleValue()
          返回这个 Float 对象的 double 值。
 boolean equals(Object obj)
          将这个对象与指定的对象进行比较。
static int floatToIntBits(float value)
          根据 IEEE 754 的浮点“单一形式”中的位布局,返回指定浮点值的表示形式。
static int floatToRawIntBits(float value)
          根据 IEEE 754 的浮点“单一形式”中的位布局,返回指定浮点值的表示形式,并保留非数字 (NaN) 值。
 float floatValue()
          返回这个 Float 对象的 float 值。
 int hashCode()
          返回这个 Float 对象的哈希码。
static float intBitsToFloat(int bits)
          返回对应于给定的位表示形式的 float 值。
 int intValue()
          返回这个 Float 值对应的 int 值(它被强制转换为一个 int)。
 boolean isInfinite()
          如果这个 Float 值的大小是无穷大,则返回 true,否则返回 false
static boolean isInfinite(float v)
          如果指定数字的大小是无穷大,则返回 true,否则返回 false
 boolean isNaN()
          如果这个 Float 值是一个非数字 (NaN) 值,则返回 true,否则返回 false
static boolean isNaN(float v)
          如果指定的数字是一个非数字 (NaN) 值,则返回 true,否则返回 false
 long longValue()
          返回这个 Float 值对应的 long 值(它被强制转换为一个 long)。
static float parseFloat(String s)
          返回一个新的 float 值,该值被初始化为用指定 String 表示的值,这与 Float 类的 valueOf 方法产生的值类似。
 short shortValue()
          返回这个 Float 值对应的 short 值(它被强制转换为一个 short 值)。
static String toHexString(float f)
          返回 float 参数的十六进制字符串表示形式。
 String toString()
          返回这个 Float 对象的字符串表示形式。
static String toString(float f)
          返回 float 参数的字符串表示形式。
static Float valueOf(float f)
          返回表示指定的 float 值的 Float 实例。
static Float valueOf(String s)
          返回保持用参数字符串 s 表示的 float 值的 Float 对象。
 
从类 java.lang.Object 继承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

字段详细信息

POSITIVE_INFINITY

public static final float POSITIVE_INFINITY
保持 float 类型的正无穷大的常量。它等于 Float.intBitsToFloat(0x7f800000) 返回的值。

另请参见:
常量字段值

NEGATIVE_INFINITY

public static final float NEGATIVE_INFINITY
保持 float 类型的负无穷大值的常量。它等于 Float.intBitsToFloat(0xff800000) 返回的值。

另请参见:
常量字段值

NaN

public static final float NaN
保持 float 类型的非数字 (NaN) 值的常量。它等于 Float.intBitsToFloat(0x7fc00000) 返回的值。

另请参见:
常量字段值

MAX_VALUE

public static final float MAX_VALUE
保持 float 类型的最大正有限大值的常量,最大正有限大值为 (2-2-23)·2127。该常量等于十六进制的浮点文本 0x1.fffffeP+127f,也等于 Float.intBitsToFloat(0x7f7fffff)

另请参见:
常量字段值

MIN_VALUE

public static final float MIN_VALUE
保持 float 类型数据的最小正非零值的常量,最小正非零值为 2-149。该常量等于十六进制的浮点文本 0x0.000002P-126f,也等于 Float.intBitsToFloat(0x1)

另请参见:
常量字段值

SIZE

public static final int SIZE
表示一个 float 值所使用的位数。

从以下版本开始:
1.5
另请参见:
常量字段值

TYPE

public static final Class<Float> TYPE
表示 float 基本类型的 Class 实例。

从以下版本开始:
JDK1.1
构造方法详细信息

Float

public Float(float value)
构造一个新分配的 Float 对象,它表示基本的 float 参数。

参数:
value - 用 Float 表示的值。

Float

public Float(double value)
构造一个新分配的 Float 对象,它表示转换为 float 类型的参数。

参数:
value - 用 Float 表示的值。

Float

public Float(String s)
      throws NumberFormatException
构造一个新分配的 Float 对象,它表示用字符串表示的 float 类型的浮点值。字符串将被转换为 float 值,这与使用 valueOf 方法非常类似。

参数:
s - 将转换为 Float 值的字符串。
抛出:
NumberFormatException - 如果字符串不包含可分析的数字。
另请参见:
valueOf(java.lang.String)
方法详细信息

toString

public static String toString(float f)
返回 float 参数的字符串表示形式。下面提到的所有字符都是 ASCII 字符。
  • 如果参数是 NaN,则结果是字符串 "NaN"。
  • 否则,结果是表示参数的(代数)符号和大小(绝对值)的字符串。如果符号为负,则结果的第一个字符是 '-' ('\u002D');如果符号为正,则结果中不显示符号字符。至于大小值 m
    • 如果 m 为无穷大,则用字符串 "Infinity" 表示它;这样,正无穷大产生的结果就是 "Infinity",而负无穷大产生的结果是 "-Infinity"
    • 如果 m 为零,则用字符 "0.0" 表示它;这样,负零产生的结果就是 "-0.0",而正零产生的结果是 "0.0"
    • 如果 m 大于或者等于 10-3,但小于 107,则采用不带前导零的十进制形式,用 m 的整数部分表示它,后面跟着 '.' ('\u002E'),再后面是表示 m 的小数部分的一个或多个十进制位数。
    • 如果 m 小于 10-3 或者大于或等于 107,则用所谓的“计算机科学符号”表示它。让 n 成为表示形式为 10n <= m < 10n+1 的惟一整数;然后让 a 成为 m 的精确算术商数值,并用 10n 这种形式表示它,因此,1 <= a < 10。然后,用 a 的整数部分表示大小值,它的表示形式为:一个十进制位数,后面跟着 '.' ('apos;),接着是表示 a 的小数部分的十进制位数,再后面是字母 'E' ('-pos;),最后是用十进制整数形式表示的 n,这与通过方法 Integer.toString(int) 产生的结果非常相似。
必须为 ma 的小数部分显示多少位呢?至少必须有一位数来表示小数部分,除此之外,需要很多(但只能和需要的一样多)位数来惟一地区别参数值和 float 类型的邻近值。也就是说,假设 x 是用十进制表示法表示的精确算术值,是通过用于有限非零参数 f 的方法生成的。那么 f 必须是最接近 xfloat 值,如果有两个 float 值同等地接近于 x,那么 f 必须是这两个值中的一个,并且 f 的最低有效位必须是 0

使用 NumberFormat 的子类创建浮点值的本地化字符串表示形式。

参数:
f - 要转换的浮点型数据。
返回:
参数的字符串表示形式。

toHexString

public static String toHexString(float f)
返回 float 参数的十六进制字符串表示形式。下面提到的所有字符都是 ASCII 字符。
  • 如果参数为 NaN,则结果是字符串 "NaN"。
  • 否则,结果是表示参数的(代数)符号和大小(绝对值)的字符串。如果符号为负,则结果的第一个字符是 '-' ('\u002D');如果符号为正,则结果中不显示符号字符。至于大小值 m
    • 如果 m 为无穷大,则用字符串 "Infinity" 表示它;这样,正无穷大产生的结果就是 "Infinity",而负无穷大产生的结果是 "-Infinity"
    • 如果 m 为零,则用字符串 "0x0.0p0" 表示它;这样,负零产生的结果就是 "-0x0.0p0",而正零产生的结果是 "0x0.0p0"
    • 如果 m 是具有标准化表现形式的 float 值,则子字符串被用来表示有效位数和指数。有效位数是用字符串 "0x1." 表示的,后面跟着该有效位数小数部分的小写的十六进制表示形式。除非所有位数为零,否则移除十六进制表示形式中的尾部零,在所有位数为零的情况下,可以使用一个零表示。其次,指数是用 "p" 表示的,后面跟着无偏指数的十进制字符串,该值与对指数值调用 Integer.toString 所产生的值相同。
    • 如果 m 是具有低正常表现形式的 float 值,则用字符 "0x0." 表示有效位数,后面跟着该有效位数小数部分的十六进制表示形式。移除十六进制表示形式中的尾部零。然后用 "p-126" 表示指数。注意,在低正常有效位数中,至少必须有一个非零位数。

示例

浮点值十六进制字符串
1.0 0x1.0p0
-1.0 -0x1.0p0
2.0 0x1.0p1
3.0 0x1.8p1
0.5 0x1.0p-1
0.25 0x1.0p-2
Float.MAX_VALUE 0x1.fffffep127
Minimum Normal Value 0x1.0p-126
Maximum Subnormal Value 0x0.fffffep-126
Float.MIN_VALUE 0x0.000002p-126

参数:
f - 要转换的 float 值。
返回:
参数的十六进制字符串表示形式。
从以下版本开始:
1.5

valueOf

public static Float valueOf(String s)
                     throws NumberFormatException
返回保持用参数字符串 s 表示的 float 值的 Float 对象。

如果 snull,则抛出 NullPointerException 异常。

忽略 s 中的前导空白字符和尾部空白字符。就像调用 String.trim() 方法那样移除空白;也就是说,ASCII 空格和控制字符都要移除。s 的其余部分应该按照词法语法规则的描述构成 FloatValue

FloatValue:
Signopt NaN
Signopt Infinity
Signopt FloatingPointLiteral
Signopt HexFloatingPointLiteral
SignedInteger

HexFloatingPointLiteral:
HexSignificand BinaryExponent FloatTypeSuffixopt

HexSignificand:
HexNumeral
HexNumeral .
0x HexDigitsopt .HexDigits
0X HexDigitsopt .HexDigits

BinaryExponent:
BinaryExponentIndicator SignedInteger

BinaryExponentIndicator:
p
P
其中,SignFloatingPointLiteralHexNumeralHexDigitsSignedIntegerFloatTypeSuffix 与《Java Language Specification》的词法结构部分中的定义相同。如果 s 的表示形式不是 FloatValue,则抛出 NumberFormatException 异常。否则,可以认为 s 表示的是常碰到的“计算机科学符号”中的精确的十进制值,或者是一个精确的十六进制值;在理论上,这个精确的数值被转换一个“无限精确的”二进制值,然后根据常用的 IEEE 754 浮点算术的“舍入成最接近的数”规则对 float 类型的值进行舍入计算,其中包括保留零值的符号。最后,返回表示这个 float 值的 Float 对象。

使用 NumberFormat 的子类来解释浮点值的本地化字符串表示形式。

注意尾部格式说明符,确定浮点文字(1.0f 是一个 float 值;1.0d 是一个 double 值)的类型的说明符不会 影响此方法的结果。换句话说,输入字符串的数值被直接转换为目标浮点类型。通常,转换先后分两步,先将字符串转换为 double 类型,然后将 double 类型转换为 float 类型,这种转换 同于直接将字符串转换为 float 类型。例如,如果第一步是被转换为中间类型 double,然后再转换为 float 类型,则字符串
"1.00000017881393421514957253748434595763683319091796875001d"
被转换为 float1.0000002f;如果直接将字符串转换为 float 值,则产生的结果将是 1.0000001f

为了避免在无效的字符串上调用此方法并导致抛出 NumberFormatExceptionDouble.valueOf 的文档中列出了一个正则表达式,可以用该表达式在屏幕上显示输入。

参数:
s - 要分析的字符串。
返回:
保持用 String 参数表示的值的 Float 对象。
抛出:
NumberFormatException - 如果字符串不包含可分析的数字。

valueOf

public static Float valueOf(float f)
返回表示指定的 float 值的 Float 实例。如果不需要新的 Float 实例,则通常应该优先采用此方法,而不是构造方法 Float(float),因为该方法很可能通过缓存经常请求的值来显著提高空间和时间性能。

参数:
f - 一个浮点值。
返回:
一个表示 fFloat 实例。
从以下版本开始:
1.5

parseFloat

public static float parseFloat(String s)
                        throws NumberFormatException
返回一个新的 float 值,该值被初始化为用指定 String 表示的值,这与 Float 类的 valueOf 方法产生的值类似。

参数:
s - 要分析的字符串。
返回:
用字符串参数表示的 float 值。
抛出:
NumberFormatException - 如果字符串不包含可分析的 float 值。
从以下版本开始:
1.2
另请参见:
valueOf(String)

isNaN

public static boolean isNaN(float v)
如果指定的数字是一个非数字 (NaN) 值,则返回 true,否则返回 false

参数:
v - 要测试的值。
返回:
如果参数为 NaN,则返回 true;否则返回 false

isInfinite

public static boolean isInfinite(float v)
如果指定数字的大小是无穷大,则返回 true,否则返回 false

参数:
v - 要测试的值。
返回:
如果参数是正无穷大或负无穷大,则返回 true;否则返回 false

isNaN

public boolean isNaN()
如果这个 Float 值是一个非数字 (NaN) 值,则返回 true,否则返回 false

返回:
如果这个对象表示的值是 NaN,则返回 true;否则返回 false

isInfinite

public boolean isInfinite()
如果这个 Float 值的大小是无穷大,则返回 true,否则返回 false

返回:
如果这个对象表示的值是正无穷大或负无穷大,则返回 true;否则返回 false

toString

public String toString()
返回这个 Float 对象的字符串表示形式。使用这个对象表示的基本 float 值被转换为一个 String,该方法与带有一参数的 toString 方法非常类似。

覆盖:
Object 中的 toString
返回:
这个对象的 String 表示。
另请参见:
toString(float)

byteValue

public byte byteValue()
返回这个 Float 值对应的 byte 值(它被强制转换为一个 byte)。

覆盖:
Number 中的 byteValue
返回:
这个对象所表示的 float 值,该值被转换为 byte 类型

shortValue

public short shortValue()
返回这个 Float 值对应的 short 值(它被强制转换为一个 short 值)。

覆盖:
Number 中的 shortValue
返回:
这个对象所表示的 float 值,该值被转换为 short 类型
从以下版本开始:
JDK1.1

intValue

public int intValue()
返回这个 Float 值对应的 int 值(它被强制转换为一个 int)。

指定者:
Number 中的 intValue
返回:
这个对象所表示的 float 值,该值被转换为 int 类型

longValue

public long longValue()
返回这个 Float 值对应的 long 值(它被强制转换为一个 long)。

指定者:
Number 中的 longValue
返回:
这个对象所表示的 float 值,该值被转换为 long 类型

floatValue

public float floatValue()
返回这个 Float 对象的 float 值。

指定者:
Number 中的 floatValue
返回:
这个对象所表示的 float 值。

doubleValue

public double doubleValue()
返回这个 Float 对象的 double 值。

指定者:
Number 中的 doubleValue
返回:
这个对象所表示的 float 值被转换为 double 类型的值,并返回转换的结果。

hashCode

public int hashCode()
返回这个 Float 对象的哈希码。结果是这个 Float 对象表示的基本 float 值的整数位表示,与 floatToIntBits(float) 方法产生的结果非常类似。

覆盖:
Object 中的 hashCode
返回:
这个对象的哈希码值。
另请参见:
Object.equals(java.lang.Object), Hashtable

equals

public boolean equals(Object obj)
将这个对象与指定的对象进行比较。当且仅当参数不是 null,而是一个 Float 对象,表示的 float 值与这个对象所表示的 float 值相同时,结果为 true。为此,在应用这两个 float 值时,当且仅当 floatToIntBits(float) 返回相同的 int 值时,认为这两个值是相同的。

注意,在大多数情况下,对于 Float 类的两个实例 f1f2,让 f1.equals(f2) 的值为 true 的条件是当且仅当

f1.floatValue() == f2.floatValue()

的值也为 true。但是也有下列两种例外:

  • 如果 f1f2 都表示 Float.NaN,那么即使 Float.NaN==Float.NaN 的值为 falseequals 方法也将返回 true
  • 如果 f1 表示 +0.0f,而 f2 表示 -0.0f,或相反的情况,则 equal 测试返回的值是 false,即使 0.0f==-0.0f 的值为 true 也是如此。
该定义能让哈希表得正确操作。

覆盖:
Object 中的 equals
参数:
obj - 要比较的对象
返回:
如果对象是相同的,则返回 true;否则返回 false
另请参见:
floatToIntBits(float)

floatToIntBits

public static int floatToIntBits(float value)
根据 IEEE 754 的浮点“单一形式”中的位布局,返回指定浮点值的表示形式。

第 31 位(掩码 0x80000000 选定的位)表示浮点数字的符号。第 30-23 位(掩码 0x7f800000 选定的位)表示指数。第 22-0 位(掩码 0x007fffff 选定的位)表示浮点数字的有效位数(有时也称为尾数)。

如果参数为正无穷大,则结果为 0x7f800000

如果参数为负无穷大,则结果为 0xff800000

如果参数为 NaN,则结果为 0x7fc00000

在所有情况下,结果都是一个整数,在将其赋予 intBitsToFloat(int) 方法时,将生成一个与 floatToIntBits 的参数相同的浮点值(除所有 NaN 值被折叠成一个“规范的”NaN 值之外)。

参数:
value - 一个浮点数字。
返回:
表示浮点数字的位。

floatToRawIntBits

public static int floatToRawIntBits(float value)
根据 IEEE 754 的浮点“单一形式”中的位布局,返回指定浮点值的表示形式,并保留非数字 (NaN) 值。

第 31 位(掩码 0x80000000 选定的位)表示浮点数字的符号。第 30-23 位(掩码 0x7f800000 选定的位)表示指数。第 22-0 位(掩码 0x007fffff 选定的位)表示浮点数字的有效位数(有时也称为尾数)。

如果参数为正无穷大,则结果为 0x7f800000

如果参数为负无穷大,则结果为 0xff800000

如果参数为 NaN,则结果是表示实际 NaN 值的整数。与 floatToIntBits 方法不同,intToRawIntBits 并没有折叠那些将 NaN 编码为一个“规范的”NaN 值的所有位模式。

在所有情况下,结果都是一个整数,在将其赋予 intBitsToFloat(int) 方法时,将生成一个与 floatToRawIntBits 的参数相同的浮点值。

参数:
value - 一个浮点数字。
返回:
表示浮点数字的位。

intBitsToFloat

public static float intBitsToFloat(int bits)
返回对应于给定的位表示形式的 float 值。该参数被认为是符合 IEEE 754 的浮点“单一形式”中的位布局规定的浮点值表示形式。

如果参数为 0x7f800000,则结果为正无穷大。

如果参数为 0xff800000,则结果为负无穷大。

如果参数在 0x7f8000010x7fffffff 或在 0xff8000010xffffffff 之间,则结果为 NaN。Java 提供的任何 IEEE 754 浮点操作都不能区分具有不同位模式的同一类型的两个 NaN 值。不同的 NaN 值只能使用 Float.floatToRawIntBits 方法进行区分。

在其他所有情况下,都允许 sem 作为可以通过以下参数进行计算的三个值;

int s = ((bits >> 31) == 0) ? 1 : -1;
int e = ((bits >> 23) & 0xff);
int m = (e == 0) ?
                (bits & 0x7fffff) << 1 :
                (bits & 0x7fffff) | 0x800000;
 
浮点结果等于算术表达式 s·m·2e-150 的值。

注意,这个方法不能返回具有与 int 参数完全相同的位模式的 float NaN 值。IEEE 754 对静默 NaN 和信号 NaN 这两种 NaN 进行区分。这两种 NaN 之间的差别在 Java 中通常是不可见的。信号 NaN 上的算术运算将它们转换为带有一个有些不同但非常类似的位模式的静默 NaN。但在某些只复制信号 NaN 的处理器上也执行这种转换。特别是在复制信号 NaN,以便将其返回给调用方法的时候,这时可能会执行这种转换。因此,intBitsToFloat 可能无法返回具有信号 NaN 位模式的 float 值。因此,对于某些 int 值,floatToRawIntBits(intBitsToFloat(start)) 可能 等于 start。此外,尽管所有 NaN 位模式,不管是静默 NaN 还是信号 NaN,都必须在上面确定的 NaN 范围内,但表示信号 NaN 的特定位模式是与平台有关的。

参数:
bits - 一个整数。
返回:
具有相同位模式的 float 浮点值。

compareTo

public int compareTo(Float anotherFloat)
从数字上比较两个 Float 对象。在应用到基本 float 值时,有两种方法来比较执行此方法产生的值与执行 Java 语言的数字比较运算符(<、<=、== 和 >= >)产生的那些值之间的区别:
  • 该方法认为 Float.NaN 将等于其自身,且大于其他所有 float 值(包括 Float.POSITIVE_INFINITY)。
  • 该方法认为 0.0f 将大于 -0.0f
这可以确保受该方法影响的 Float 对象的自然顺序与等式一致 的。

指定者:
接口 Comparable<Float> 中的 compareTo
参数:
anotherFloat - 要比较的 Float 值。
返回:
如果 anotherFloat 在数字上等于这个 Float,则返回值为 0;如果 anotherFloat 在数字上小于这个 Float,则返回小于 0 的值;如果 anotherFloat 在数字上大于这个 Float,则返回大于 0 的值。
从以下版本开始:
1.2
另请参见:
Comparable.compareTo(Object)

compare

public static int compare(float f1,
                          float f2)
比较两个指定的 float 值。返回的整数值的符号与通过以下调用返回的整数的符号相同:
   new Float(f1).compareTo(new Float(f2))
 

参数:
f1 - 要比较的第一个 float 值。
f1 - 要比较的第二个 float 值。
返回:
如果 f1 在数字上等于这个 f2,则返回值为 0;如果 f1 在数字上小于这个 f2,则返回小于 0 的值;如果 f1 在数字上大于这个 f2,则返回大于 0 的值。
从以下版本开始:
1.4

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策