powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Сохранение вещественного числа в базе
5 сообщений из 5, страница 1 из 1
Сохранение вещественного числа в базе
    #36106324
hunterman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с интересным решением, но спросить не у кого почему именно так - в базе для каждого товара сохранена цена в виде целого числа. База - sql server. Видимо такое решение было принято исходя из желание сохранить точность вещественного числа.

Вот из этого всего вытекает вопрос - смысл этого? зачем такое делается? и делается ли вообще? ведь есть специальные типы для сохранности таких вещей типа decimal.

спасибо.
...
Рейтинг: 0 / 0
Сохранение вещественного числа в базе
    #36106349
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hunterman,

Совершенно стандартное решение вообще-то.
Действительно, корни его идут из нежелания возни с потерей точности в вещественных числах.
Делается это довольно часто.
А почему не используются специальные типы данных... на этот вопрос может ответить только тот кто базу проектировал. Скорее всего, в те давние года типа money в движке базе еще не было. Либо дизайнер БД настолько привык к представлению денег в копейках что даже не задумывается о возвращении к рублям.
...
Рейтинг: 0 / 0
Сохранение вещественного числа в базе
    #36106373
hunterman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

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

наверное немного глупо будет звучать вопрос "как всётаки мне получить из сохраняющегося числа - вещественное", но по другому наверное никак, проектировщика нет и не будет.
ну и чтобы всё таки больше понять и научиться не подскажите какие методы преобразований чисел float->int->float существуют?
...
Рейтинг: 0 / 0
Сохранение вещественного числа в базе
    #36106498
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
huntermanнаверное немного глупо будет звучать вопрос "как всётаки мне получить из сохраняющегося числа - вещественное", но по другому наверное никак, проектировщика нет и не будет. Разделить его на 100?
huntermanну и чтобы всё таки больше понять и научиться не подскажите какие методы преобразований чисел float->int->float существуют?А вот этого как раз делать не стоит. Деньги потому и хранят обычно либо в money типах (если сервер умеет работать с фиксированной точкой) либо в целых если не умеет. Конвертация во float обязательно будет приводить к артефактам округления в младших разрядах.
Считай деньги в копейках всегда, раз уж они в базе хранятся как целые. Просто дели сумму на сто перед показом на экране, а при вводе суммы пользователем умножай ее на сто перед записью в базу.
...
Рейтинг: 0 / 0
Сохранение вещественного числа в базе
    #36106741
hunterman
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owl,

в этом то и подвох - не копейки это, делить на 100 очень легко было бы догадаться :) если бы это проектировал я - не задумываясь применил бы специальный тип и не морочил бы голову.

хранящиеся число представляет собой целое число из 10 чисел. очень похоже что его переводили через hex представления типа float->hex->int но пробы обратной операции у меня получают не предполагаемый результат, поэтому и спросил по поводу методов.

зы знаю что float не нужно использовать для денежных операций, но тут похоже что именно его и используют и видимо из тех же соображений что и использования в качестве инта значения для хранения - сэкономить ресурсов(имхо ошибочное решение).
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Сохранение вещественного числа в базе
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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