Как работать с переводом типов в PHP?

Здравствуйте. В общем-то, основа основ. Есть excel файл, из которого я беру string153,17 (это цена за товар). Хранить хотел в MySQL её в виде копеек - integer 15317. Для этого при сохранении (использую Symfony) привожу кdouble
$purchase->setPrice($transform->reverseTransform((double)$new_array['price']));

`$transform` - это отдельный класс для перевода туда-сюда типов
public function reverseTransform(mixed $priceInRouble)
    {
        if (null === $priceInRouble) {
            return;
        }
        $priceInPenny = (int)($priceInRouble * 100);
        var_dump($priceInPenny);
        return $priceInPenny;
    }

При умножении на 100 получаю ` int(15316)`, что, при приводит к потери копейки. Как вообще правильно работать с хранением денег в базе (ну точней с приведением типов)?
  • Вопрос задан
  • 126 просмотров
Решения вопроса 1
alexey-m-ukolov
@alexey-m-ukolov Куратор тега PHP
Я для этих целей использую расширение Decimal:
(new Decimal\Decimal('153.17'))->mul(100)->toInt(); // 15317


Но можно использовать и функцию bcmul:
(int)bcmul('153.17', '100'); // 15317
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы