我有一个电话号码(可能是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
请向我建议一些功能或过程。
答案 0 :(得分:0)
您可以尝试以下一种。
SELECT CASE WHEN @value <> CEILING(@value) THEN Str(@value, 12, 4) ELSE Str(@value, 12, 2) END
答案 1 :(得分:0)
在Hive中,我无法获得任何函数,如果不对零进行调整,该函数将给我精确除法。因此,我是使用BigDecimal在Java中完成的。
BigDecimal值=新的BigDecimal(“ 1001.123”); BigDecimal newValue = value.scaleByPowerOfTen(-2);
OP:10.01123
BigDecimal值=新的BigDecimal(“ 1000”); BigDecimal newValue = value.scaleByPowerOfTen(-2);
OP:10.00
谢谢您的帮助!