提交 e08a0ebf authored 作者: noelgrandin's avatar noelgrandin

Fix bug in dividing very-small BigDecimal numbers

上级 7617a13d
......@@ -101,15 +101,7 @@ public class ValueDecimal extends Value {
bd = BigDecimal.ZERO;
} else if (bd.scale() > 0) {
if (!bd.unscaledValue().testBit(0)) {
String s = bd.toString();
int i = s.length() - 1;
while (i >= 0 && s.charAt(i) == '0') {
i--;
}
if (i < s.length() - 1) {
s = s.substring(0, i + 1);
bd = new BigDecimal(s);
}
bd = bd.stripTrailingZeros();
}
}
return ValueDecimal.get(bd);
......
......@@ -3873,10 +3873,10 @@ call datediff('MS', TIMESTAMP '1900-01-01 00:00:01.000', TIMESTAMP '2008-01-01 0
> 3408134399000
> rows: 1
call select 1.0/3.0*3.0, 100.0/2.0, -25.0/100.0, 0.0/3.0, 6.9/2.0;
> SELECT 0.999999999999999999999999990, 50, -0.25, 0, 3.45 FROM SYSTEM_RANGE(1, 1) /* PUBLIC.RANGE_INDEX */ /* scanCount: 2 */
> ----------------------------------------------------------------------------------------------------------------------------
> (0.999999999999999999999999990, 50, -0.25, 0, 3.45)
call select 1.0/3.0*3.0, 100.0/2.0, -25.0/100.0, 0.0/3.0, 6.9/2.0, 0.72179425150347250912311550800000 / 5314251955.21;
> SELECT 0.999999999999999999999999990, 50, -0.25, 0, 3.45, 1.35822361752313607260107721120531135706133161972E-10 FROM SYSTEM_RANGE(1, 1) /* PUBLIC.RANGE_INDEX */ /* scanCount: 2 */
> -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
> (0.999999999999999999999999990, 50, -0.25, 0, 3.45, 1.35822361752313607260107721120531135706133161972E-10)
> rows: 1
call dateadd('MS', 1, TIMESTAMP '2001-02-03 04:05:06.789001');
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论