В предыдущем проекте я заметил, что ценовое поле хранилось как интервал, а не как плавание. Это сделано путем умножения фактического значения 100, при этом причина, должен был постараться не сталкиваться с проблемами с плавающей точкой.
Действительно ли это - хорошая практика, которой я должен применить, или действительно ли это является ненужным и только делает данные менее прозрачными?
Интересный вопрос.
Я бы не выбрал бы поплавок в среде MySQL. Слишком много проблем в прошлом с точностью с этим типом данных.
Для меня выбор будет между INT
и десятичным (18,4)
.
Я видел, что реальные примеры мира целые числа используются для представления ценностей плавающих точек. Внутренние вторых данных JD Edwards все это делают. Количество обычно делятся на 10000. Хотя я уверен, что это быстрее и меньший в таблице, он просто означает, что мы всегда должны бросать INT в десятичном значении, если мы хотим что-то делать с ними, особенно подразделение.
От перспективы программирования, я всегда предпочитал работать с десятичным
для цен (или денег
в RDBMS, которые его поддерживают).
Несмотря на то, что это спасет вас от проблем, связанных с плаванием, сохранение цен в виде целых чисел может привести к проблеме, когда вы в конечном итоге взимаете 100-кратную цену с клиента. Это также может запутать других программистов.
Я видел оба решения, которые успешно использовались на веб-сайтах электронной коммерции среднего размера, но я предпочитаю использовать поплавки.
-121--2964799- Я думаю, что Десятичная
подходит для этого использования.
Ошибки с плавающей точки могут вызвать проблемы при умножении больших чисел. Как правило, финансовые расчеты никогда не должны выполняться с числами с плавающей точки, где это возможно.
Хотя это позволило бы сэкономить на проблемах, связанных с плавающей платформой, сохранение цен в виде целых чисел может привести к проблеме, когда вы в конечном итоге будете взимать с клиента плату, в 100 раз превышающую его цену. Это также может сбить с толку других программистов.
Я видел, как оба решения успешно использовались на сайтах средней электронной коммерции, но я предпочитаю использовать плавающие платформы.
Я думаю, что Десятичная
хорошо подходит для такого использования.