@Artem0071
Безработный mr. Junior

Как правильно переводить float в int?

Есть дробное число с 2 знаками после запятой.
Его нужно домножить на 100 и перевести в целое число.
Но при перемножении и преведении и целому теряются копейки:

$a = 9244.47; // 9244.47
$b = $a * 100; // 924447
$c = intval($b); // 924446 <-- куда-то деваются копейки
$d = intval("$b"); // 924447 <-- ШТА??


Вот рабочий пример: sandbox.onlinephpfunctions.com/code/8730d0be61db4e...

Как сделать так, чтобы все работало как ожидается?
  • Вопрос задан
  • 171 просмотр
Решения вопроса 2
nokimaro
@nokimaro
Меня невозможно остановить, если я смогу начать.
<?php

$a = 9244.47;
$b = round($a * 100);
$c = intval($b);

var_dump($a, $b, $c);


p.s. если в базе будете хранить числа с копейками то используйте DECIMAL тип.
Ответ написан
Комментировать
Почитайте объяснение данного феномина тут
https://wp-kama.ru/id_6579/13-neozhidannostej-v-ph...
Неточности с плавающей точкой

А вот решение
$a = 9244.47;;
$c = intval( bcmul(9244.47, 100, 2) );

echo $c;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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