当除数为" 0.0"时为零警告。

时间:2015-05-13 14:55:00

标签: php division

我正在从文本文件中读取数据并执行一些基本的数学运算。事情应该如何运作:

// 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?

4 个答案:

答案 0 :(得分:3)

Typecast $divisor浮动:$divisor = (float)'0.0';

答案 1 :(得分: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是否为零。

答案 2 :(得分:0)

将其转换为int;

$divisor = (int) '0.0';

答案 3 :(得分:0)

我认为如果除数为零,则商应该为零。 因此,您可以在以下操作中获得结果,而不是N / A.

我总是像这样解决它:

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

它也适用于"0.0"