我有一个号码(可能是12345或123.45)。我需要在Hive中向左或向右移动小数位而不进行舍入。
select 1001.123*POW(10,-2); 10.011230000000001 select 1001.123/100; 10.011230000000001
但我要10.01123。
但如果是这样的情况
select 1000*POW(10,-2); 10.00
请给我推荐一些功能或流程。
pdtvr36n1#
在Hive里,我不能得到任何函数,它能给我精确的除法而不跟踪零。所以我在java中使用bigdecimal。bigdecimal值=新的bigdecimal(“1001.123”);bigdecimal newvalue=value.scalebypoweroften(-2);操作:10.01123bigdecimal值=新的bigdecimal(“1000”);bigdecimal newvalue=value.scalebypoweroften(-2);营业时间:10:00谢谢你的帮助!!
wvyml7n52#
你可以试试下面这个。
SELECT CASE WHEN @value <> CEILING(@value) THEN Str(@value, 12, 4) ELSE Str(@value, 12, 2) END
2条答案
按热度按时间pdtvr36n1#
在Hive里,我不能得到任何函数,它能给我精确的除法而不跟踪零。所以我在java中使用bigdecimal。
bigdecimal值=新的bigdecimal(“1001.123”);bigdecimal newvalue=value.scalebypoweroften(-2);
操作:10.01123
bigdecimal值=新的bigdecimal(“1000”);bigdecimal newvalue=value.scalebypoweroften(-2);
营业时间:10:00
谢谢你的帮助!!
wvyml7n52#
你可以试试下面这个。