Как правильно перевести float в int [дубликат]

111
20 августа 2019, 14:00

На данный вопрос уже ответили:

  • ceil() php неправильно считает? 2 ответа

Пишу такой код:

$sum = 161.98;
$sum = $sum * 100;
var_dump($sum);         // float(16198)
var_dump((int)$sum);    // int(16197)

Почему при переводе в int теряется единица

Answer 1

Попробуйте использовать округление в большую сторону

var_dump((int)ceil($sum));
Answer 2

Почему при переводе в int теряется единица

Потому, что из-за особенностей арифметики с плавающей точкой 161.98*100 может быть равно 16197.9999999.

При выводе float это учитывается, а при преобразовании в int дробная часть просто отбрасывается.

Что с этим делать - округлять перед преобразованием. Только не так, как советует IvanTokar, а до ближайшего целого, через round

READ ALSO
FTP удаление выбранных файлов

FTP удаление выбранных файлов

проблема в том, что происходит удаление всех файлов, независимо, от того какие файлы выбраны, не могу понять, в чем проблемаБуду очень рад...

112
Ajax передача данных из формы

Ajax передача данных из формы

Есть такая форма с javascriptoм

110
Загрузка нескольких файлов

Загрузка нескольких файлов

Форма загрузки файлов:

100
Преобразовать многомерный массив

Преобразовать многомерный массив

Пытаюсь получить на PHP(Bitrix) многомерный массив:

127