Обычное дело - хранить в копейках, т.е. как целое число. Про это и Дядя Боб пишет и Фаулер и вот в видео:
Смотрю курс от Povilas Korop, он использует копейки в INTEGER. Я верю в этого чувака! На самом деле конечно DECIMAL вот прямо для этого. В некоторых диалектах SQL у него есть синоним MONEY и CURRENCY. НОБЛЯ! проблема не в SQL, а в PHP который эти данные получит и будет считать как float.
но, чтобы хранить флоат в децимал, необходимо еще рядом и хранить множитель? например 435,3679 записать как 3453679 и рядом множитель 10000
На одном из sql форумов читал про то, что желательно хранить цены не в формате x.xx, а в x.xxxx. Проблемы возникают когда узнаём стоимость n-количества товара и округляя мы получаем лишние копейки.
GAAP Compliance is required or you need 4 decimal places: DECIMAL(13, 4) --- Добавлено --- Но это оставляет открытым вопрос об адекватном представлении в PHP. Потому что если ты заберешь этот decimal в свой скрипт и будешь с ним работать как с числом, он будет интерпретироваться как float и тут пойдут косяки. PHP не поддерживает фиксированную точность кроме как в целых числах. Есть вариант использовать математику для больших чисел (BCMath) --- Добавлено --- Ну или не умничать и всегда хранить и считать как число копеек. Только при выводе на страницу делить на сто и форматироватьна два знака после запятой. Не при вычислениях, только при выводе!