Merge pull request #12 from CrazyHZM/floatBug, fix float accuracy issues

diff --git a/src/main/java/com/alibaba/com/caucho/hessian/io/BasicSerializer.java b/src/main/java/com/alibaba/com/caucho/hessian/io/BasicSerializer.java
index 6d5aee9..4b9f359 100644
--- a/src/main/java/com/alibaba/com/caucho/hessian/io/BasicSerializer.java
+++ b/src/main/java/com/alibaba/com/caucho/hessian/io/BasicSerializer.java
@@ -106,6 +106,8 @@
                 break;
 
             case FLOAT:
+                out.writeDouble(Double.parseDouble(String.valueOf(((Number) obj).floatValue())));
+                break;
             case DOUBLE:
                 out.writeDouble(((Number) obj).doubleValue());
                 break;
diff --git a/src/test/java/com/alibaba/com/caucho/hessian/io/HessianJavaSerializeTest.java b/src/test/java/com/alibaba/com/caucho/hessian/io/HessianJavaSerializeTest.java
index d9b46c8..abe66a9 100644
--- a/src/test/java/com/alibaba/com/caucho/hessian/io/HessianJavaSerializeTest.java
+++ b/src/test/java/com/alibaba/com/caucho/hessian/io/HessianJavaSerializeTest.java
@@ -83,4 +83,12 @@
         Assert.assertEquals("tom", serializedUser.getUserName());
     }
 
+    @Test
+    public void testFloat() throws Exception {
+        Float fData = 99.8F;
+        Double dData = 99.8D;
+        Assert.assertEquals(dData, baseHessianSerialize(fData));
+        Assert.assertEquals(dData, baseHessian2Serialize(fData));
+    }
+
 }