- 在hive中,两个字段做除法,如何取得想要的小数位数。
如果非科学计数法,比如1/3,没有0,所有就不会存在科学计数法,所以如果想要取多少位,直接round(1/3,2)即可。
如果是科学计数法,比如9/1000000001,结果中0比较多,就会存在科学计数法,这时round(9/10000000001,3)肯定是0,因为只取3位小数,四舍五入还是0,只有当你取更多位的小数时,才有可能不会四舍五入。还有有些数字即使你写了round(1/3,2)*100,按道理是整数,但是求出来的结构有可能就是带有小数的,这个地方很不解。
一个比较明确的位数输出结果是如下结构:cast((1-t1.bad_num/t1.all_num) as decimal(10,4))*10000,这样的一定就是整数了,而且强制转换成decimal后,数据也会进行四舍五入。
来源:oschina
链接:https://my.oschina.net/u/2260928/blog/807649