tiflash decimal 运算精度问题

【 TiDB 使用环境】生产环境 /测试
【 TiDB 版本】6.1.4
【复现路径】
创建一张表

CREATE TABLE dec (
dec1 DECIMAL(28,4),
dec2 DECIMAL(28,4)
)

插入一条数据
insert into dec
(dec1, dec2)
values (176.9900, 176.1100)

查询一
WITH kc AS(
SELECT CAST(IFNULL(dec1,0) - IFNULL(dec2,0) AS DECIMAL(28,2)) book_sum_1
FROM test.dec
)

查询二
SELECT * FROM kc;

SELECT CAST(IFNULL(dec1,0) - IFNULL(dec2,0) AS DECIMAL(28,2)) book_sum_1
FROM test.dec mi;

不启用tiflash时,上述两个查询的结果是正确的,都是0.88

【遇到的问题】
启用tiflash
ALTER TABLE dec SET tiflash replica 3;

1 查询一返回的结果期望是0.88,结果变成了 0.89;查询二返回的是期望的 0.88
2 如果cast as 后面的decimal(28,2) 改成decimal(28,1),查询一返回的结果期望是0.9,结果返回了0.8,查询二是正确的返回的0.9

https://docs.pingcap.com/zh/tidb/v6.6/tiflash-compatibility
可以参考一下这个

1、遵循tikv和tiflash的规则和差异;
2、对这种精度主要在设计上,如果要保留多少个精度,一般都是乘以多少位整数,特对金额方面尤其适用,总的来说,数据库里面都是存储的整数,显示的时候做换算。

从某方面来说设计尤为重要,在支付方面,不管什么数据库,基本不存储小数,都是扩大100倍或者1000倍后存储在数据库中,后面给用户展示的时候需要转换。

如果是tiflash和tidb的差异也罢了,现在发现的问题是都在tiflash下,查询一和查询二的结果不一样,唯一的区别仅仅是多写了一个cte

感觉是bug啊