gcc/libjava/java/lang/Float.java

180 lines
3.7 KiB
Java
Raw Normal View History

/* Copyright (C) 1998, 1999, 2000, 2001 Free Software Foundation
1999-04-07 22:42:40 +08:00
This file is part of libgcj.
This software is copyrighted work licensed under the terms of the
Libgcj License. Please consult the file "LIBGCJ_LICENSE" for
details. */
package java.lang;
/**
* @author Andrew Haley <aph@cygnus.com>
* @date September 25, 1998.
*/
/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3
* "The Java Language Specification", ISBN 0-201-63451-1
* plus online API docs for JDK 1.2 beta from http://www.javasoft.com.
* Status: Believed complete and correct.
*/
public final class Float extends Number implements Comparable
1999-04-07 22:42:40 +08:00
{
public static final float MAX_VALUE = 3.4028235e+38f;
public static final float MIN_VALUE = 1.4e-45f;
public static final float NEGATIVE_INFINITY = -1.0f/0.0f;
public static final float POSITIVE_INFINITY = 1.0f/0.0f;
public static final float NaN = 0.0f/0.0f;
// This initialization is seemingly circular, but it is accepted
// by javac, and is handled specially by gcc.
public static final Class TYPE = float.class;
private float value;
PropertyChangeEvent.java (serialVersionUID): Added. * java/beans/PropertyChangeEvent.java (serialVersionUID): Added. * java/beans/PropertyVetoException.java (serialVersionUID): Added. * java/io/File.java (writeObject): Added. (readObject): Added. (serialVersionUID): Added. * java/io/ObjectOutputStream.java (writeObject): Initialized fieldsAlreadyWritten before recursion rather than after. * java/io/ObjectStreamClass.java (serialVersionUID): Added. * java/io/OptionalDataException.java (serialVersionUID): Added. (OptionalDataException): Made package private. * java/io/SyncFailedException.java (SyncFailedException): Removed default constructor to match spec. * java/lang/Boolean.java (serialVersionUID): Added. * java/lang/Byte.java (serialVersionUID): Added. * java/lang/Character.java (serialVersionUID): Added. * java/lang/Double.java (serialVersionUID): Added. * java/lang/Float.java (serialVersionUID): Added. * java/lang/Integer.java (serialVersionUID): Added. * java/lang/Long.java (serialVersionUID): Added. * java/lang/Number.java (serialVersionUID): Added. * java/lang/Short.java (serialVersionUID): Added. * java/lang/String.java (serialVersionUID): Added. * java/lang/ThreadDeath.java (ThreadDeath): Removed constructor to match spec. * java/lang/reflect/InvocationTargetException.java (serialVersionUID): Added. * java/net/URL.java (handler): Made transient. (hashCode): Added field for serialization, per spec. and use cached value if available. (serialVersionUID): Added. (URL): Initialize hashCode. (set): Adjust hashCode. (readObject): New Method to initialize the protocol handler when deserializing. (writeObject): New method. * java/text/BreakIterator.java: Removed 'implements Serializable'. * java/text/Collator.java: Removed 'implements Serializable'. * java/util/GregorianCalendar.java (serialVersionUID): Added. * java/util/Properties.java (serialVersionUID): Added. * java/util/Random.java (serialVersionUID): Added. (seed): Made private. (nextNextGaussian): Made private. (haveNextNextGaussian): Made private. * java/util/Stack.java (serialVersionUID): Added. * java/util/TimeZone.java (serialVersionUID): Added. * java/util/Vector.java (serialVersionUID): Added. Serialization mods. From-SVN: r36272
2000-09-09 03:37:09 +08:00
private static final long serialVersionUID = -2671257302660747028L;
1999-04-07 22:42:40 +08:00
public Float (float value)
{
this.value = value;
}
public Float (double value)
{
this.value = (float)value;
}
public Float (String s) throws NumberFormatException
{
this.value = valueOf (s).floatValue ();
}
public static float parseFloat (String s) throws NumberFormatException
{
// The spec says that parseFloat() should work like
// Double.valueOf(). This is equivalent, in our implementation,
// but more efficient.
return (float) Double.parseDouble (s);
}
1999-04-07 22:42:40 +08:00
public String toString ()
{
return toString (value);
}
public boolean equals (Object obj)
{
if (obj == null)
return false;
if (!(obj instanceof Float))
return false;
Float f = (Float) obj;
return floatToIntBits (value) == floatToIntBits (f.floatValue ());
}
public int hashCode ()
{
return floatToIntBits (value);
}
public int intValue ()
{
return (int) value;
}
public long longValue ()
{
return (long) value;
}
public float floatValue ()
{
return (float) value;
}
public double doubleValue ()
{
return (double) value;
}
public byte byteValue ()
{
return (byte) value;
}
public short shortValue ()
{
return (short) value;
}
public static String toString (float v)
{
return Double.toString ((double) v, true);
}
public static Float valueOf (String s) throws NullPointerException,
NumberFormatException
{
if (s == null)
throw new NullPointerException ();
return new Float (Double.valueOf (s).floatValue ());
}
public boolean isNaN ()
{
return isNaN (value);
}
public static boolean isNaN (float v)
{
int bits = floatToIntBits (v);
int e = bits & 0x7f800000;
int f = bits & 0x007fffff;
return e == 0x7f800000 && f != 0;
}
public boolean isInfinite ()
{
return isInfinite (value);
}
public static boolean isInfinite (float v)
{
int bits = floatToIntBits (v);
int f = bits & 0x7fffffff;
return f == 0x7f800000;
}
public static native int floatToIntBits (float value);
public static native float intBitsToFloat (int bits);
public int compareTo (Float d)
{
float v = d.value;
if (isNaN (value))
return isNaN (v) ? 1 : 0;
else if (isNaN (v))
return -1;
else if (value == 0.0 && v == -0.0)
return 1;
else if (value == -0.0 && v == 0.0)
return -1;
else if (value == v)
return 0;
return value > v ? 1 : -1;
}
1999-04-07 22:42:40 +08:00
public int compareTo (Object o)
{
return compareTo ((Float) o);
}
}