home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / java / lang / float.java < prev    next >
Text File  |  1995-08-11  |  5KB  |  185 lines

  1. /*
  2.  * @(#)Float.java    1.17 95/05/18  
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package java.lang;
  21.  
  22. /**
  23.  * The Float class is a wrapper for float values.
  24.  * @version     1.17, 18 May 1995
  25.  * @author    Lee Boynton
  26.  * @author    Arthur van Hoff
  27.  */
  28. public final
  29. class Float extends Number {
  30.     /**
  31.      * Positive inifinity.
  32.      */
  33.     public static final float POSITIVE_INFINITY = 1.0 / 0.0;
  34.  
  35.     /**
  36.      * Negative inifinity.
  37.      */
  38.     public static final float NEGATIVE_INFINITY = -1.0 / 0.0;
  39.  
  40.     /* REMIND: comment this in once the nightly can compile NANs
  41.      * Not-a-Number. <em>Note: is not equal to anything, including
  42.      * itself</em>
  43.     public static final float NAN = 0.0 / 0.0;
  44.      */
  45.  
  46.     /**
  47.      * The maximum value a float can have.
  48.      */
  49.     public static final float MAX_VALUE = 3.40282346638528860e+38;
  50.  
  51.     /**
  52.      * The minimum value a float can have.
  53.      */
  54.     public static final float MIN_VALUE = 1.40129846432481707e-45;
  55.  
  56.     /** pi = 3.1415... */
  57.     public static final float PI = 3.14159265358979323846;
  58.  
  59.     /** e = 2.718... */
  60.     public static final float E = 2.7182818284590452354;
  61.  
  62.     /**
  63.      * Returns a string representation for the specified float value.
  64.      * @param f    the float to be converted
  65.      * @return     a string representing the value
  66.      */
  67.     public static native String toString(float f);
  68.  
  69.     /**
  70.      * Returns a floating point value that the string represents.
  71.      * @param s        the string that is to be parsed
  72.      * @return         a float object representing the float value of the string
  73.      * @exception    NumberFormatException The string does not contain a parsable float
  74.      */
  75.     public static native Float valueOf(String s);
  76.  
  77.     /**
  78.      * Returns true if the argument is the special Not-a-Number (NaN) value.
  79.      * @param v    the value to be tested
  80.      * @return    true if the value is NaN
  81.      */
  82.     static public boolean isNan(float v) {
  83.     return (v != v);
  84.     }
  85.  
  86.     /**
  87.      * Returns true if the number is infinitely large in magnitude.
  88.      * @param v    the value to be tested
  89.      * @return    true if the value is infinitely large in magnitude
  90.      */
  91.     static public boolean isInfinite(float v) {
  92.     return (v == POSITIVE_INFINITY) || (v == NEGATIVE_INFINITY);
  93.     }
  94.  
  95.     /**
  96.      * The value of the float.
  97.      */
  98.     private float value;
  99.  
  100.     /**
  101.      * Constructs a wrapper for the given float value.
  102.      * @param value the value of the Float
  103.      */
  104.     public Float(float value) {
  105.     this.value = value;
  106.     }
  107.  
  108.     /**
  109.      * Returns true if this float value is Not-a-Number (NaN).
  110.      */
  111.     public boolean isNan() {
  112.     return isNan(value);
  113.     }
  114.  
  115.     /**
  116.      * Returns true if this float value is infinitely large in magnitude.
  117.      */
  118.     public boolean isInfinite() {
  119.     return isInfinite(value);
  120.     }
  121.  
  122.     /**
  123.      * Returns a string representation of this Float object.
  124.      * @return a string representation this float
  125.      */
  126.     public String toString() {
  127.     return String.valueOf(value);
  128.     }
  129.  
  130.     /**
  131.      * Returns the integer value of this float (by casting to an int).
  132.      */
  133.     public int intValue() {
  134.     return (int)value;
  135.     }
  136.  
  137.     /**
  138.      * Returns the long value of this float (by casting to a long).
  139.      */
  140.     public long longValue() {
  141.     return (long)value;
  142.     }
  143.  
  144.     /**
  145.      * Returns the float value
  146.      */
  147.     public float floatValue() {
  148.     return value;
  149.     }
  150.  
  151.     /**
  152.      * Returns the double value
  153.      */
  154.     public double doubleValue() {
  155.     return (double)value;
  156.     }
  157.  
  158.     /**
  159.      * Returns a hashcode for this float.
  160.      */
  161.     public int hashCode() {
  162.     return (int)value;
  163.     }
  164.  
  165.     /**
  166.      * Compares this object against some other object.
  167.      *
  168.      * <em>Note: To be useful in hashtables this method
  169.      * considers two Nan floating point values to be equal. This
  170.      * is not according to IEEE specification</em>
  171.      *
  172.      * @param obj        the object to compare with
  173.      * @return         true if the object is the same
  174.      */
  175.     public boolean equals(Object obj) {
  176.     if ((obj != null) && (obj instanceof Float)) {
  177.         if ((value == ((Float)obj).value) || (isNan(value) && isNan(((Float)obj).value))) {
  178.         return true;
  179.         }
  180.     }
  181.     return false;
  182.     }
  183.  
  184. }
  185.