powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка хранения double precision
7 сообщений из 7, страница 1 из 1
ошибка хранения double precision
    #39867156
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем привет.

использую ФБ2.5
каким-то образом в базе оказалось вот такое значение:

авторSCLAD_TIME SCLAD_IN CASTVARCHAR20
19.03.2018 19:20:49 10 10.00000000000000
03.08.2018 16:18:54 20 20.00000000000000
03.08.2018 16:45:27 5 5.000000000000000
17.09.2018 9:45:26 3 3.000000000000000
21.05.2019 20:11:45 6.66666666666667E28 6.666666666666667e+028
13.06.2019 9:54:04 1 1.000000000000000
13.06.2019 11:13:36 1 1.000000000000000


round с таким не работает дает ошибку, cast только в varchar
хотелось бы разом как-то поправить эти строки
приходит на ум только переводить в строку, обрезать после точки, и потом опять в дабл

что еще присоветуете для коррекции таких случаев?
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39867158
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот так поприличнее выглядит

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SCLAD_TIME		SCLAD_IN		CASTVARCHAR20
19.03.2018 19:20:49	10			10.00000000000000
03.08.2018 16:18:54	20			20.00000000000000
03.08.2018 16:45:27	5			5.000000000000000
17.09.2018 9:45:26	3			3.000000000000000
21.05.2019 20:11:45	6.66666666666667E28	6.666666666666667e+028
13.06.2019 9:54:04	1			1.000000000000000
13.06.2019 11:13:36	1			1.000000000000000
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39867166
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genok,

а с чего ты решил что это ошибка хранения? Для double такие числа в порядке вещей. Где-нибудь вылезло в результате которые не округлили
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39867168
rdb_dev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genok, перестаёт работать уже на 20 знаках до десятичной точки (6.666666666666667e+19). У тебя на складе в самом деле количество товара исчисляется числом с 28-ью разрядами до десятичной точки? Даже если ты округлишь это число до 6.6667E28, многие функции с ним всё равно не смогут работать.
Код: plsql
1.
SELECT Round((6.666666666666667e+28)*1.0e-24)*1.0e+24 FROM oneRow
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39867221
Cobalt747
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genok,

Почему же ошибка?
Как передали, так СУБД и хранит
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39876306
genok
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
задам еще раз вопрос, вдруг не увидели

авторхотелось бы разом как-то поправить эти строки
приходит на ум только переводить в строку, обрезать после точки, и потом опять в дабл

что еще присоветуете для коррекции таких случаев?

про то что я неправильно ему назвал, уже понял, спасибо, больше про это писать не нужно.
...
Рейтинг: 0 / 0
ошибка хранения double precision
    #39876321
pastor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
genokзадам еще раз вопрос, вдруг не увидели

авторхотелось бы разом как-то поправить эти строки
приходит на ум только переводить в строку, обрезать после точки, и потом опять в дабл

что еще присоветуете для коррекции таких случаев?

про то что я неправильно ему назвал, уже понял, спасибо, больше про это писать не нужно.

просто сравнить?

round -> int64

Код: sql
1.
2.
3.
update my_table set
 my_field = -1
where my_filed >= 9223372036854775807 /*MaxInt64*/
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / ошибка хранения double precision
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]