select 22/30 from dual;
select 22/30 * 39.0000000000000000000000000000 from dual;
在oracle 中 计算结果小数位保存了30位,
而在tidb中 计算结果小数位子保存了4位
【 Bug 的影响】
在sql中进行除法计算时,可能会导致最终计算结果有巨大的误差。
【期望看到的行为】
希望小数位计算的精度越多越好。
【相关组件及具体版本】
tidb v5.1.1
select 22/30 from dual;
select 22/30 * 39.0000000000000000000000000000 from dual;
在oracle 中 计算结果小数位保存了30位,
而在tidb中 计算结果小数位子保存了4位
【 Bug 的影响】
在sql中进行除法计算时,可能会导致最终计算结果有巨大的误差。
【期望看到的行为】
希望小数位计算的精度越多越好。
【相关组件及具体版本】
tidb v5.1.1
除法默认保留四位小数,如果需要更多精度可以采用下面的写法
SELECT CAST(22/30 AS decimal(18,9))
这里应该是延续了MySQL的处理方式
mysql8.0 可以用div_precision_increment 参数改变精度,但是tidb好像没效
在tidb5.1中测试div_precision_increment这个参数确实没有生效