Предупреждение о делении на ноль, когда делитель равен «0,0»;

Я читаю данные из текстового файла и выполняю некоторые базовые математические операции. Вот как все должно работать:

// no warning, expected result N/A
$dividend = 100;
$divisor = 0.0;
if (!empty($dividend) && !empty($divisor))
{
$quotient = $dividend/$divisor;
} else {
$quotient = 'N/A';
}
echo $quotient;

Вот как все происходит на самом деле.

// yeilds division by zero warning
$dividend = 100;
$divisor = '0.0';
if (!empty($dividend) && !empty($divisor))
{
$quotient = $dividend/$divisor;
} else {
$quotient = 'N/A';
}
echo $quotient;

Я получаю предупреждение о делении на ноль, когда значение в текстовом файле читается как «0.0», что empty() видит как непустое, когда оно на самом деле пустое.

Какой лучший способ проверить, что «0,0» на самом деле 0?

-1

Решение

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

$dividend = 100;
$divisor = '0.0';
if ((float)$dividend && (float)$divisor) //both are non-zero
{
$quotient = $dividend/$divisor;
} else { //one or the other are zero
$quotient = 'N/A';
}
echo $quotient;

Однако рассмотрим только проверку $divisor для нуля.

1

Другие решения

напечатанный материал $divisor держаться на плаву: $divisor = (float)'0.0';

3

Приведите его к int;

$divisor = (int) '0.0';
0

Я думаю, что частное должно быть равно нулю, если делитель равен нулю.
Таким образом, вы получите результат в следующих операциях вместо N / A.

Я всегда решаю это так:

$quotient = ($divisor == 0) ? 0 : ($divident/$divisor);

это должно работать для "0.0", тоже.

0
По вопросам рекламы [email protected]