提交 03a720d3 authored 作者: Thomas Mueller's avatar Thomas Mueller

Double.NaN

上级 554a5c0f
......@@ -33,6 +33,7 @@ public class ValueDouble extends Value {
private static final double DOUBLE_ONE = 1.0;
private static final ValueDouble ZERO = new ValueDouble(DOUBLE_ZERO);
private static final ValueDouble ONE = new ValueDouble(DOUBLE_ONE);
private static final ValueDouble NAN = new ValueDouble(Double.NaN);
private final double value;
......@@ -132,6 +133,8 @@ public class ValueDouble extends Value {
return ZERO;
} else if (DOUBLE_ONE == d) {
return ONE;
} else if (Double.isNaN(d)) {
return NAN;
}
return (ValueDouble) Value.cache(new ValueDouble(d));
}
......
......@@ -22,6 +22,7 @@ import org.h2.util.TempFileDeleter;
import org.h2.util.ValueHashMap;
import org.h2.value.CompareMode;
import org.h2.value.Value;
import org.h2.value.ValueDouble;
import org.h2.value.ValueInt;
/**
......@@ -41,6 +42,21 @@ public class TestValueHashMap extends TestBase implements DataHandler {
}
public void test() throws SQLException {
testNotANumber();
testRandomized();
}
private void testNotANumber() throws SQLException {
ValueHashMap map = new ValueHashMap(this);
for (int i = 1; i < 100; i++) {
double d = Double.longBitsToDouble(0x7ff0000000000000L | i);
ValueDouble v = ValueDouble.get(d);
map.put(v, null);
assertEquals(1, map.size());
}
}
private void testRandomized() throws SQLException {
ValueHashMap map = new ValueHashMap(this);
HashMap hash = new HashMap();
Random random = new Random(1);
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论