Hi,

While merging in the Sun double/float toString/parsing in IKVM, I found that 
the Float/VMFloat interface wasn't properly factored to support this. This 
patch (already committed) fixes that.

Regards,
Jeroen

2007-05-11  Jeroen Frijters  <[EMAIL PROTECTED]>

        * java/lang/Float.java
        (toString(float)): Call VMFloat instead of VMDouble.
        (parseFloat): Call VMFloat. Fixed comment.
        * vm/reference/java/lang/VMFloat.java
        (toString, parseFloat): New methods.
        NEWS: added note about these changes.
Index: java/lang/Float.java
===================================================================
RCS file: /cvsroot/classpath/classpath/java/lang/Float.java,v
retrieving revision 1.35
diff -u -r1.35 Float.java
--- java/lang/Float.java        10 Dec 2006 20:25:44 -0000      1.35
+++ java/lang/Float.java        11 May 2007 06:07:52 -0000
@@ -181,7 +181,7 @@
    */
   public static String toString(float f)
   {
-    return VMDouble.toString(f, true);
+    return VMFloat.toString(f);
   }
 
   /**
@@ -331,9 +331,9 @@
    *
    * @param str the <code>String</code> to convert
    * @return the <code>float</code> value of <code>s</code>
-   * @throws NumberFormatException if <code>s</code> cannot be parsed as a
+   * @throws NumberFormatException if <code>str</code> cannot be parsed as a
    *         <code>float</code>
-   * @throws NullPointerException if <code>s</code> is null
+   * @throws NullPointerException if <code>str</code> is null
    * @see #MIN_VALUE
    * @see #MAX_VALUE
    * @see #POSITIVE_INFINITY
@@ -342,9 +342,7 @@
    */
   public static float parseFloat(String str)
   {
-    // XXX Rounding parseDouble() causes some errors greater than 1 ulp from
-    // the infinitely precise decimal.
-    return (float) Double.parseDouble(str);
+    return VMFloat.parseFloat(str);
   }
 
   /**
Index: vm/reference/java/lang/VMFloat.java
===================================================================
RCS file: /cvsroot/classpath/classpath/vm/reference/java/lang/VMFloat.java,v
retrieving revision 1.2
diff -u -r1.2 VMFloat.java
--- vm/reference/java/lang/VMFloat.java 2 Jul 2005 20:33:08 -0000       1.2
+++ vm/reference/java/lang/VMFloat.java 11 May 2007 06:08:52 -0000
@@ -108,4 +108,26 @@
    */
   static native float intBitsToFloat(int bits);
 
+  /**
+   * @param f the <code>float</code> to convert
+   * @return the <code>String</code> representing the <code>float</code>
+   */
+  static String toString(float f)
+  {
+    return VMDouble.toString(f, true);
+  }
+
+  /**
+   * @param str the <code>String</code> to convert
+   * @return the <code>float</code> value of <code>s</code>
+   * @throws NumberFormatException if <code>str</code> cannot be parsed as a
+   *         <code>float</code>
+   * @throws NullPointerException if <code>str</code> is null
+   */
+  static float parseFloat(String str)
+  {
+    // XXX Rounding parseDouble() causes some errors greater than 1 ulp from
+    // the infinitely precise decimal.
+    return (float) Double.parseDouble(str);
+  }
 } // class VMFloat

Reply via email to