Oracle как усечь десятичное число до 1 значащего ди git? - PullRequest
0 голосов
/ 30 апреля 2020

Я бы хотел округлить десятичные числа до первого значащего ди git. Поскольку все они будут иметь различное количество ведущих нулевых десятичных знаков, я искал этот сайт и нашел следующее выражение.

TRUNC(EPSILON,LENGTH(REGEXP_SUBSTR(EPSILON,'.0*')))

Он работает для всех чисел, которые имеют менее 5 ведущих 0 десятичных знаков, и не вернуть правильный результат, если число имеет 5 или более десятичных разрядов.

Редактировать: Epsilon - это вычисляемое значение из запроса, тип данных значений, используемых в расчете: Число .

Примеры приведены ниже:

**EPSILON**     **Expected Result**     **Actual Result**
0.0000083333    0.000008                0
0.0000047666    0.000004                0
0.000025        0.00002                 0.00002
0.000012195     0.00001                 0.00001
0.00002         0.00002                 0.00002
0.00036333334   0.0003                  0.0003

Любая помощь будет принята с благодарностью! спасибо!

1 Ответ

0 голосов
/ 30 апреля 2020

Ваш код должен быть рядом, чтобы делать то, что вы хотите. Я бы просто предложил изменить регулярное выражение, чтобы оно учитывало числа в левой части точки:

TRUNC(EPSILON,LENGTH(REGEXP_SUBSTR(EPSILON,'^\d*\.0*')))
...