LINUX.ORG.RU

Не могу избавиться от Варнинга в PHP


0

0

Есть такой кусок кода

if ($result[0]['total'] != 0) {
$precise_average = $result[0]['sum_rated'] / $result[0]['total'];
$average = $precise_average - ($precise_average % 0.1);
}

после выполнения вылазит варнинг:

Warning: Division by zero in ....class.php on line 54, это строка
$average = $precise_average - ($precise_average % 0.1)

разумеется Warning могу отключить, но все равно неприятно, деления на 0 то не наблюдается, а PHP все равно материться.

Подскажите в чем подвох?

Может с приведением типов что не так, но $precise_average - по-любому дробное.

anonymous

>> Подскажите в чем подвох?

Подвох в том, что % - это получение остатка от деления. А получение остатка - это целочисленная операция, сделовательно имеем ($precise_average % 0)ю

Deleted
()

> ($precise_average % 0.1)

Как по Вашему, чему должен быть равен остаток от деления, например, 5 на 0.1?

eugine_kosenko ★★★
()

Может, так:

$average = $precise_average - ($precise_average*100 % 10)*0.01;

?

Slavaz ★★★★★
()

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

anonymous
()
Ответ на: комментарий от anonymous

> пользователи, бедные, страдают

С пользователями как раз все в порядке.. Страдают программисты, которые правят и поддерживают эти чудеса..

boombick ★★★★★
()
Ответ на: комментарий от boombick

Ты бы хотел, чтоб подобными методами вычисляли, сколько ты должен в веб-магазине заплатить? Или, того хуже, вычисляли бы твою зарплату?

anonymous
()
Ответ на: комментарий от anonymous

да, сорри, с неопределенностью 0 / 0 попутал :)

isden ★★★★★
()
Ответ на: комментарий от isden

> в математике, емнип, N / 0 = бесконечность

Это не математика, это PHP.

eugine_kosenko ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.