Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
Добрый день, уважаемые специалисты. Прошу совета. Суть проблемы: Есть таблицы, с полями Numeric. Запись в таблицы происходит таким образом: Допустим пришло число 1.123Е-20 соответственно в таблице отражается число 0.0000000000000000001123. Читается из таблицы точно такое же число 0.0000000000000000001123. Вопрос. Возможно ли отображать в таблицах с полями Numeric числа в формате 1.123Е-20? Если нет, то возможно ли правильно преобразовать число к первоначальному виду из 0.0000000000000000001123 в 1.123Е-20 для чтения? Суть в том, что если просто проделать ::float то он оставит до 15 знаков, мне же нужно хотя бы 17 знаков оставить, тоесть при работе с числами вида 0.000000000000000000000000000000001495679999999995675679999 я получаю select '0.000000000000000000000000000000001495679999999995675679999'::float; 1.49568e-33 что меня не устраивает, поскольку значащих цифр крайне мало, хотелось бы что то типа 1.49567999999999567567e-33, такое возможно? Заранее извиняюсь, если чушь какую то спрашиваю, сильно не пинайте, только начинаю разбираться в этом всем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 12:28 |
|
||
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
inforse, offtop там есть забавная философско--математическая бага: Код: sql 1. 2. 3. 4. -- для физика это именно бага, а для кодера -- фича и якобы так и д.б.. /offtop ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 13:09 |
|
||
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
inforse... в таблице отражается число ... В таблице число хранится. А отобразить при выборке его можно по-разному. 9.8. Data Type Formatting Functions Код: sql 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.07.2016, 17:18 |
|
||
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
LeXa NalBat, к сожалению to_char не совсем то что нужно. Попробую обрисовать проблему под другим углом. Для использования точных вычислений мы переработали базу с float на numeric, поскольку float даёт обрезку и округление до 15 знаков. Но поскольку клиент работает через ODBC драйвер, возникла ситуация что драйвер считывает числа так как они видны в таблице: -0.000000000000004713167022163789226645 А поскольку в драйвере задан жесткий буфер в 36 знаков, все остальное он откидывает. И выводит такое сообщение в лог файл авторThe 3th item was truncated The buffer size = 36 and the value is '-0.0000000000000047131670221637892266' Я не могу понять, почему драйвер считывает все знаки, а не сворачивает в степень. Вот из-за этого вопрос, может есть конфигурационные параметры отвечающие за это? Как тока я делаю ::float он замечательно сворачивает, и считывает. Но от float нам сказали уйти, вот и бьёмся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 11:24 |
|
||
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
inforseЯ не могу понять, почему драйвер считывает все знаки, а не сворачивает в степень. А драйвер и не должен этого делать, он передаёт вам данные. Встречный вопрос — какие типы данных вы используете в вашем приложении, чтобы работать с числами такой точности? Может имеет смысл всё же в строку преобразовывать для передачи данных, а потом уже приводить к нужному типу внутри приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.07.2016, 12:13 |
|
||
|
тип numeric и работа с ним
|
|||
|---|---|---|---|
|
#18+
inforseв драйвере задан жесткий буфер в 36 знаков Получается, это ошибка драйвера. Кто ему дал право обрезать значения numeric? Может быть получится использовать to_char(), подумайте об обходном пути. Создать вьюшку с дополнительным полем текстового типа со значениями to_char(). Текстовые значения ведь драйвер не обрезает. Использовать прямо в таблице текстовое поле вместо numeric для хранения этих значения можно, но нельзя, потому что некрасиво очень. :) inforseЯ не могу понять, почему драйвер считывает все знаки, а не сворачивает в степень. Это было бы решением вашей проблемы, но не решением в общем случае. А если у кого-то значения numeric с экспонентой и сотней значащих цифр. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.07.2016, 11:07 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=88&tid=1997087]: |
0ms |
get settings: |
11ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
49ms |
get tp. blocked users: |
2ms |
| others: | 13ms |
| total: | 175ms |

| 0 / 0 |
