我的数据类型为decimal(18,4)
,通过复制命令我将json插入redshift表中。对于值0.13
,它正确插入,而对于值0.1475
,它插入为0.1474
。
答案 0 :(得分:2)
IEEE754 Double标准中 0.1475 的最准确表示是
1.47499999999999992228438827624E-1
(类似,但浮点的数字较少)
Redshift内部使用(浮点数或双精度数)内部,然后将数字以定义的精度(在您的情况下为4)插入列中,并且不应用舍入,而只是将结果修整为小数点后4位。
只有X + Y/(2^N)
的值会显示精确,可以测试。对于4个小数位,最佳值为 1/16 = 0.0625
因此,根据文档here
使用copy
时,必须通过 ROUNDEC 选项。