我正在从文本文件中读取数据并执行一些基本的数学运算。事情应该如何运作:
// 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?
答案 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"
。