This is an automated email from the ASF dual-hosted git repository.

hxd pushed a commit to branch fix_float_precision_test_in_memtable
in repository https://gitbox.apache.org/repos/asf/incubator-iotdb.git


The following commit(s) were added to 
refs/heads/fix_float_precision_test_in_memtable by this push:
     new 55d7a8c  fix float precision in PrimitiveMemTableTest
55d7a8c is described below

commit 55d7a8cf29e66993f71a1a2103e9f14990cec440
Author: xiangdong huang <[email protected]>
AuthorDate: Fri Mar 8 22:05:06 2019 +0800

    fix float precision in PrimitiveMemTableTest
---
 .../db/engine/memtable/PrimitiveMemTableTest.java  | 26 +++++++++++++---------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git 
a/iotdb/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
 
b/iotdb/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
index cb2dc5e..01f43bb 100644
--- 
a/iotdb/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
+++ 
b/iotdb/src/test/java/org/apache/iotdb/db/engine/memtable/PrimitiveMemTableTest.java
@@ -18,7 +18,6 @@
  */
 package org.apache.iotdb.db.engine.memtable;
 
-import java.text.DecimalFormat;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.Iterator;
@@ -36,15 +35,11 @@ import org.junit.Test;
 
 public class PrimitiveMemTableTest {
 
-  DecimalFormat decimalFormat;
+  double delta;
 
   @Before
   public void setUp() {
-    StringBuilder stringBuilder = new StringBuilder(".");
-    for (int i=0; i < TSFileConfig.floatPrecision; i++) {
-      stringBuilder.append("0");
-    }
-    decimalFormat=new DecimalFormat(stringBuilder.toString());
+    delta = Math.pow(0.1, TSFileConfig.floatPrecision);
   }
 
   @Test
@@ -119,11 +114,12 @@ public class PrimitiveMemTableTest {
       TimeValuePair next = tvPair.next();
       Assert.assertEquals(pair.getTimestamp(), next.getTimestamp());
       if (dataType == TSDataType.DOUBLE) {
-        
Assert.assertEquals(MathUtils.roundWithGivenPrecision(pair.getValue().getDouble()),
-            Double.valueOf(decimalFormat.format(next.getValue().getDouble())), 
0.0001);
+        Assert.assertEquals(pair.getValue().getDouble(),
+            MathUtils.roundWithGivenPrecision(next.getValue().getDouble()), 
delta);
       } else if (dataType == TSDataType.FLOAT) {
-        
Assert.assertEquals(MathUtils.roundWithGivenPrecision(pair.getValue().getFloat()),
-            Float.valueOf(decimalFormat.format(next.getValue().getFloat())), 
0.0001);
+        float expected = pair.getValue().getFloat();
+        float actual = 
MathUtils.roundWithGivenPrecision(next.getValue().getFloat());
+        Assert.assertEquals(expected, actual, delta+ Float.MIN_NORMAL);
       } else {
         Assert.assertEquals(pair.getValue(), next.getValue());
       }
@@ -131,6 +127,14 @@ public class PrimitiveMemTableTest {
   }
 
   @Test
+  public void testFloatType() {
+    IMemTable memTable = new PrimitiveMemTable();
+    String deviceId = "d1";
+    int size = 1000000;
+    write(memTable, deviceId, "s1", TSDataType.FLOAT, size);
+  }
+
+  @Test
   public void testAllType() {
     IMemTable memTable = new PrimitiveMemTable();
     int count = 10;

Reply via email to