举例:无限小数保留几位
说明:hive中round函数用于保留小数位,最后一位四舍五入
结果:double类型计算结果精度丢失
原因:round函数返回值是保留几位小数的double类型,虽然是保留几位,但浮点型的长度还在,所以二次计算时就会发生精度丢失
解决办法:将round函数返回值强转成decimal
扩展:hive函数值返回值是浮点型的,发生精度丢失时,可以采取类似办法
测试过程如下:
举例:无限小数保留几位
说明:hive中round函数用于保留小数位,最后一位四舍五入
结果:double类型计算结果精度丢失
原因:round函数返回值是保留几位小数的double类型,虽然是保留几位,但浮点型的长度还在,所以二次计算时就会发生精度丢失
解决办法:将round函数返回值强转成decimal
扩展:hive函数值返回值是浮点型的,发生精度丢失时,可以采取类似办法
测试过程如下: