Как я могу вернуть 3 степени точности из числа oracle? - PullRequest
1 голос
/ 14 февраля 2020

У нас есть научное c приложение, которое находится в Access, и я перехожу на Oracle. Тип данных доступа - Номер. Oracle - это число (20,12).

Данные представляют собой небольшие числа, которые мы должны показывать пользователю в отчете, например, как 1.000 E-5.

Однако число на самом деле что-то вроде 0,0000099999, что 0,99999 E-5.

Я могу преобразовать число в научную запись c, но оно возвращает 0,99999 E-5 без округления. Я хотел бы иметь возможность округлить это число. К сожалению, числа заканчиваются с точки зрения количества десятичных знаков. Например:

0.9999E-5

0.9999E-10

Так что простой прямой КРУГЛЫЙ (N, X) не будет работать, я думаю. Я хочу округлить до 3 десятичных знаков и показать в научной нотации c. По сути, это научная c концепция степеней точности, в которой число десятичных знаков варьируется, а число значащих цифр всегда равно 3.

Ответы [ 2 ]

2 голосов
/ 14 февраля 2020

Я думаю, это то, что вы хотите?

select to_char(0.0000099999 , '9.999EEEE') from dual

1.000E-05

select to_char(0.0000000000099999 , '9.999EEEE') from dual

1.000E-11

0 голосов
/ 19 февраля 2020

Если каждое число необходимо округлить (основываясь на вашем последнем комментарии), я предполагаю, что ожидаемый результат будет следующим:

0.00009999 => 1.000E-04
0.0009999 => 1.000E -03
0,009999 => 1.000E-02
0.09999 => 1.000E-01
0.9999 => 1.000E-00

В этом случае попробуйте:

select to_char(round(<input>,abs(trunc(log(10,<input>)))),'0.999EEEE') from dual

Пример:

select to_char(round(0.00009999,abs(trunc(log(10,0.00009999)))),'0.999EEEE') from dual

Выход:

1.000E-04

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...