分为零,php

时间:2011-10-26 14:27:31

标签: php divide-by-zero

我创建了这个函数,在尝试在Y文本框中输入0时正确显示无穷大符号。但是我仍然得到除零错误...这是我的代码。

这是切换参数的情况

case '/':             
    $prod = $x / $y;     
    break;

HH

//check for divide by 0
function check0($y)
{
    if ($y == 0)
        throw new Exception ($prod = "&#8734");

    return FALSE;
 }

 try
 {
    check0($y);
    $prod = $x /$y;   
 }catch(Exception $zero){
     echo $zero->getMessage();
 }

5 个答案:

答案 0 :(得分:2)

首先:您正在第二行代码处进行除法(可以将其划分为零)。

第二次:由于您输入错误,因此无需在方法中返回false。

第三:为什么在这里使用异常而不只是让你的方法返回true为false并在执行devision之前检查它。

第四:如果您只需要检查$ y的值,为什么要使用方法。调用方法或包含if语句只需要一行代码。

那么,为什么它不能就像:

case '/':                  
    if($y > 0)
        $prod = $x / $y;
    break; 

答案 1 :(得分:0)

这是因为你实际上在顶部附近进行了划分(在case中)。

答案 2 :(得分:0)

你的逻辑感觉......嗯好纠结....这里看看这个:

<?php
    function divide($x, $y) {
        if ( $y === 0 ) 
            throw new Exception("Divide By Zero");
        return $x/$y;
    }

    try {
        $product = divide(3, 0);
    }
    catch(Exception $e) {
        if ( $e->getMessage() == "Divide By Zero" ) 
            $product = "&#8734";
        else
            $product = NULL;
    }
    print "Product is $product\n";

?>

答案 3 :(得分:0)

在我的情况下一切正常。可以肯定的是,你不是在你的脚本中更早地使用除法,因为它看起来像。

case '/':
$prod = $x / $y;
break;

在函数调用之前启动。

答案 4 :(得分:0)

你必须在分裂前调用check0()。如果y == 0,则应返回FALSE,否则返回TRUE。 如果返回TRUE则进行除法。但是,没有必要调用方法来执行此操作!