我需要在配置单元中将小数位向左或向右移动而不进行舍入

0tdrvxhp  于 2021-06-01  发布在  Hadoop
关注(0)|答案(2)|浏览(327)

我有一个号码(可能是12345或123.45)。
我需要在Hive中向左或向右移动小数位而不进行舍入。

问题1

select 1001.123*POW(10,-2);

10.011230000000001

select 1001.123/100;

10.011230000000001

但我要10.01123。

问题2

但如果是这样的情况

select 1000*POW(10,-2);

10.00

请给我推荐一些功能或流程。

pdtvr36n

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
谢谢你的帮助!!

wvyml7n5

wvyml7n52#

你可以试试下面这个。

SELECT CASE WHEN @value <> CEILING(@value) THEN Str(@value, 12, 4) ELSE Str(@value, 12, 2) END

相关问题