让决策更智能
新一代智能数据分析平台

如何解决double字段带来的精度问题

观小数发表于:2020年10月23日 16:36:48更新于:2020年10月23日 16:42:15

背景介绍:

在使用BI的各种场景中,可能会遇到一些因为精度问题带来的麻烦,在进行比较或者筛选联动里,会出现非预期的情况,比如以下这种场景:

在表格里明明有某个数据:0015f92914f2c9be34302c0f6869815

但是当我联动的筛选条件选择这个数据时,被联动的这个卡片却没有数据:

0015f929180b25acab33dc868678795而某些条件下又是能正常有数据的:

0015f9291cdf01a3f41025be60666cb


产生原因:

“日月”这个字段的格式为double,可能会有精度问题,用string()函数转换为文本格式后,发现果然是精度问题,我们看到的202001,实际上后面还带小数,实际是大于202001的:

0015f9293458b9af090ff18337c35b4


解决方法:

1、将字段“日月”用int和string转化成文本格式:

0015f9293e5684330dbb3f57d416699

2、用substr截取字段的前6位:

image.png

0015f92941a7ef01fbaa7dfa09e2064


通过以上两种方式转化字段格式,卡片数据集更新后,在进行筛选联动,可以看到数据是正常的了:

0015f92950c60c2bd1352ec6aa059ab


小结:double字段可能会带来精度问题,即你看到的0,可能不一定是真的0,所以需要进行转化成其他格式,比如string,或者人为进行比较条件的修改,比如大于等于而不是直接等于(具体视场景而定)。



    您需要登录后才可以回复