除数法计算保留的精度太少,导致最终计算结果差误较大

select 22/30 from dual;
select 22/30 * 39.0000000000000000000000000000 from dual;
在oracle 中 计算结果小数位保存了30位,
而在tidb中 计算结果小数位子保存了4位



image
image

【 Bug 的影响】

在sql中进行除法计算时,可能会导致最终计算结果有巨大的误差。

【期望看到的行为】

希望小数位计算的精度越多越好。

【相关组件及具体版本】

tidb v5.1.1

除法默认保留四位小数,如果需要更多精度可以采用下面的写法
SELECT CAST(22/30 AS decimal(18,9))

这里应该是延续了MySQL的处理方式

1 个赞

mysql8.0 可以用div_precision_increment 参数改变精度,但是tidb好像没效

在tidb5.1中测试div_precision_increment这个参数确实没有生效