Мне нужно переместить десятичные разряды в улей влево или вправо без округления - PullRequest
0 голосов
/ 24 октября 2018

У меня есть номер (это может быть 12345 или 123.45).

Мне нужно переместить десятичные знаки влево или вправо в улье без округления.

Вопрос 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

Пожалуйста, предложите мне какую-нибудь функцию или процесс.

Ответы [ 2 ]

0 голосов
/ 31 октября 2018

В Hive я не мог получить какую-либо функцию, которая дала бы мне точное деление без талирования нулей.Поэтому я сделал это в Java, используя BigDecimal.

BigDecimal value = new BigDecimal ("1001.123");BigDecimal newValue = value.scaleByPowerOfTen (-2);

OP: 10.01123

BigDecimal value = new BigDecimal ("1000");BigDecimal newValue = value.scaleByPowerOfTen (-2);

OP: 10,00

Спасибо за помощь !!

0 голосов
/ 24 октября 2018

Вы можете попробовать следующее.

SELECT CASE WHEN @value <> CEILING(@value) THEN Str(@value, 12, 4) ELSE Str(@value, 12, 2) END
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...