问题描述如标题所示
1.理论情况:
round()函数,是用来做四舍五入的,比如:select round(2.126,2)
结果为:2.13
2.异常情况:
但是有时候会出现一些意料之外的情况,比如:select round(1/3,3)
结果为:0.33300000000000002
正确的应该是:0.333
- 截图效果示例如下:
3.解决办法:
问题原因在于round处理数据貌似是基于2进制方式。具体后续再补充。
有效解决方案:select round(cast(1/3 as decimal(8,4)),3)
现在的结果:0.333
4.其他问题
Caused by: org.apache.hadoop.hive.metastore.api.MetaException: java.lang.