Работает ли с деньгами (десятичные числа) в PHP считается безопасным?

У меня есть таблица items в моей базе данных MySQL с полем DECIMAL(10,2) называемым price .

Получая эти значения, безопасно ли выполнять вычисления и такие с этими числами в PHP? Или я получу потенциальные ошибки округления и такие вещи, которые характерны при работе с типами данных с плавающей запятой?

Как PHP обрабатывает эти вещи за крышкой? Безопасно ли делать расчеты с помощью PHP?

Solutions Collecting From Web of "Работает ли с деньгами (десятичные числа) в PHP считается безопасным?"

Вы можете использовать библиотеку PHP, которая выполняет произвольную математику точности, такую ​​как BC Math или GMP .

При использовании центов или минимально возможной денежной единицы иногда работает, что, если вы столкнетесь с ситуацией, когда вы должны иметь дело с долями центов? Например, если вы имеете дело с продажей и покупкой акций, вы должны иметь большую точность, чем просто центы. В подобных ситуациях вы должны использовать произвольную математику точности.

Большинство людей измеряют валюту в наименьшем номинале в PHP – например, 10 долларов США долларов будут показаны как 1000 центов.

Тогда тривиально / 100 получить доллары, и вы не получите, например, 4.9999999 значений, вызванных арифметикой с плавающей запятой.

В качестве альтернативы вы можете использовать значения с плавающей запятой и округлые до ближайших значений минимального значения (например, это может быть кратное 5).

Кажется, вы уже знаете об этом, но для других это все еще необходимо прочитать 🙂