powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Плавающий DECIMAL
2 сообщений из 2, страница 1 из 1
Плавающий DECIMAL
    #32535233
3DFace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Эпиграф:

The NUMERIC and DECIMAL types are implemented as the same type by MySQL, as permitted by the SQL-92 standard. They are used for values for which it is important to preserve exact precision, for example with monetary data.
DECIMAL and NUMERIC values are stored as strings, rather than as binary floating-point numbers, in order to preserve the decimal precision of those values.

Проблема:

Есть таблица t1 c полем d1 типа decimal(32,16)

пишу

UPDATE TABLE t1 SET d1=29.95;
SELECT d1 FROM t1;

29.9499999999999990

no good
исхитряюсь с кавычками

UPDATE TABLE t1 SET d1="29.95";
29.9500000000000000

good, но нужно кое-что посложнее, нужен инкрементальный update (ну, x=x+y)
сбрасываю в ноль, затем

UPDATE TABLE t1 SET d1=d1+29.95;
29.9499999999999990

та же история, а если с кавычками?

UPDATE TABLE t1 SET d1=d1+"29.95";
29.9499999999999990

хм, не помогает

Поразмыслив делаю вывод, что 29.95 трактуется как float и в выражении
с decimal этот float приводится к decimal-у 29.94999.... (либо наоборот - decimal к float, тогда вообще торба)

Непонятно - какой смысл иметь такой "точный" DECIMAL, который может точно хранить, но в который нельзя точно положить?

В 4-х MySql-ях появился полезнейший cast( as ),
но, по-видимому, cast(29.95 as DECIMAL) не работает

Всё это очень грустно. Я мог бы конечно брать d1, вне SQL его увеличивать, и потом ложить назад, хитро закавычив это дело, но... как-то это не очень...

Если кто-то что-то, то буду очень рад.

Благодарю за сотрудничество.
...
Рейтинг: 0 / 0
Плавающий DECIMAL
    #32535562
Sad Spirit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по поводу "preserve exact precision" и прочего:
http://sql-info.de/mysql/gotchas.html#1_13
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Плавающий DECIMAL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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