Деление на ноль, php - PullRequest
       25

Деление на ноль, php

0 голосов
/ 26 октября 2011

Я создал эту функцию, которая правильно отображает символ бесконечности при попытке ввести 0 в текстовое поле Y. Однако я все еще получаю ошибку деления на ноль ... вот мой код.

вот случай для переключения статуса

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

чч

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

2 голосов
/ 26 октября 2011

Первый : вы делите код второй строки (который может быть равен нулю).

Второй : нет необходимости возвращать false вваш метод, поскольку вы выдаваете ошибку.

Третий : зачем использовать здесь исключение, а не просто позволить вам метод вернуть true из false и проверить это перед выполнением деления.

Четвертый : зачем нужен метод, если вам нужно только проверить значение $ y.Для вызова метода или включения оператора if требуется всего одна строка кода.

Итак, почему это не может быть просто:

case '/':                  
    if($y > 0)
        $prod = $x / $y;
    break; 
0 голосов
/ 26 октября 2011

Вы должны вызвать check0 () перед делением. Вы должны вернуть FALSE, если y == 0, иначе TRUE. Если верните TRUE, делайте деление. Однако для этого не обязательно вызывать метод!

0 голосов
/ 26 октября 2011

В моем случае все работает нормально.Убедитесь, что вы не пытаетесь использовать деление ранее в своем скрипте, потому что это выглядит так.

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

начинается до вызова вашей функции.

0 голосов
/ 26 октября 2011

Ваша логика кажется ... ммм хорошо запуталась .... Вот посмотрите на это:

0 голосов
/ 26 октября 2011

Это потому, что вы на самом деле делаете разделение вверху (в case).

...