decimal 类型计算结果有误

Viewed 16

Doris 版本 2.0.10

CREATE TABLE IF NOT EXISTS `test` (
            `k0` decimal(38,0) null comment "",
            `k1` decimal(38,4) null comment ""
        ) engine=olap
        DISTRIBUTED BY HASH(`k1`) BUCKETS 5 properties("replication_num" = "1");

insert into test values(12,12.345);

select k0 + k1 from test;

预期结果24.345, 最终计算结果24

1 Answers

这种是符合预期的,在你例子中,加数的其中一个整数就有38位,所以加法的结果只能是decimal(38,0)。这是因为我们最大只有38位,要优先保证整数部分,所以溢出了。
你可以调整下你的decimal后面的大小,比如改成decimal(30,4)这种,就没有问题了