当除数为“0.0”时除以零警告
Division by zero warning when divisor is "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 的最佳方法是什么?
类型转换 $divisor
为浮动:$divisor = (float)'0.0';
将其转换为 int;
$divisor = (int) '0.0';
我认为如果除数为零,商应该为零。
因此,您在以下操作中得到的结果是 N/A.
我总是这样解决的:
$quotient = ($divisor == 0) ? 0 : ($divident/$divisor);
它也应该适用于 "0.0"
。
您需要在条件语句中强制转换为浮动(或使用 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
是否为零。
我正在从文本文件中读取数据并执行一些基本数学运算。事情应该是这样的:
// 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 的最佳方法是什么?
类型转换 $divisor
为浮动:$divisor = (float)'0.0';
将其转换为 int;
$divisor = (int) '0.0';
我认为如果除数为零,商应该为零。 因此,您在以下操作中得到的结果是 N/A.
我总是这样解决的:
$quotient = ($divisor == 0) ? 0 : ($divident/$divisor);
它也应该适用于 "0.0"
。
您需要在条件语句中强制转换为浮动(或使用 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
是否为零。