举例:无限小数保留几位

说明:hive中round函数用于保留小数位,最后一位四舍五入

结果:double类型计算结果精度丢失

原因:round函数返回值是保留几位小数的double类型,虽然是保留几位,但浮点型的长度还在,所以二次计算时就会发生精度丢失

解决办法:将round函数返回值强转成decimal

扩展:hive函数值返回值是浮点型的,发生精度丢失时,可以采取类似办法

测试过程如下:

hive中浮点型数据计算精度丢失_hive

hive中浮点型数据计算精度丢失_sql_02

 

hive中浮点型数据计算精度丢失_sql_03

hive中浮点型数据计算精度丢失_大数据_04