2014-11-29 2 views
-1

Этот скрипт, который обрабатывает идентификаторы javascript и var. То, что вы видите ниже, - это небольшой проект, который я делаю. Предполагается рассчитать значения x1 и x2 квадратичного уравнения. Проблема, что у меня есть, что я не в состоянии сделать программу определить, является ли или нет результаты в целочисленном виде или жеКак определить, является ли число целым?

вот мой код:

<!DOCTYPE html> 
<html> 
<head> 
<link rel="stylesheet" type="text/css" href="matrix_style.css"> 
<title>JS Calculator</title> 

<script language="javascript" type="text/javascript"> 
    function result(){ 
    //first the values from table one are stored in the bellow variables: 
    a=Number(document.table_1.number1.value); 
    b=Number(document.table_1.number2.value); 
    c=Number(document.table_1.number3.value); 
    // then they are proccessed and stored in the ans1_1 and ans_2 variables: 
    ans_1=-b + Math.sqrt(Math.pow(b, 2) - (4*a*c)); 
    ans_2=-b - Math.sqrt(Math.pow(b, 2) - (4*a*c)); 
    ans_3= "no solution" 
    // here is my problem, I can't seem to be able to determine if the variables are integers meaning ... -2, -1, 0, 1, 2, ... 
    // this part is suppose to dispaly the results only if the results are integers and else display "no solution" 
    if(return ans_1%1===0 && return ans_2%===0) 
    { 
     document.calculator.total_1.value=ans_1; 
     document.calculator.total_2.value=ans_2; 
    } 
    else 
    { 
     document.calculator.total_3.value=ans_3; 
    } 

    } 
</script> 

</head> 
    <body> 


    <!--First the user inserts the a b and c values into the table bellow--> 


    <table class="table_1"> 
    <form name="table_1" > 
     <tr> 
      <th>Insert your equation:</th> 
      <th></th> 
      <th></th> 


     </tr> 
     <tr> 
      <td><span id="A" contenteditable><input type="text" name="number1" ><br></span></td> 
      <td><span id="B" contenteditable><input type="text" name="number2" ><br></span></td> 
      <td><span id="C" contenteditable><input type="text" name="number3" ><br></span></td> 

     </tr> 


    </form> 
    </table> 

    <!--The results are suppose to display in table bellow: --> 

    <table class="table_result"> 
    <form name="calculator"> 
     <tr> 

      <th>Result:</th> 
      <th></th>  
     </tr> 
     <tr> 
      <td><span id="A_ans" contenteditable><input type="text" name="total_1" ><br></span></td> 
      <td><span id="B_ans" contenteditable><input type="text" name="total_2" ><br></span></td> 
     </tr> 
     <tr> 
      <td><span id="C_ans" contenteditable><input type="text" name="total_3" ><br></span></td> 
     </tr>  
      <input type="button" value="result" id="submit" onclick="javascript:result();"> 
    </form> 
    </table> 
    </body> 
</html> 

ответ

4

Это if(return ans_1%1===0 && return ans_2%===0) является синтаксис ошибка, она должна быть

if(ans_1%1===0 && ans_2%1===0) 

возвращение неуместен там и чек на ans_2 пропускал модуль операнда.

Кроме того, вы передаете вычитание в Math.pow(), что может быть отрицательным (в результате получается NaN).

+0

все еще нет ответа. он отображает сообщение об ошибке. то есть предположим, что если числа не являются целыми числами –

+1

@CashVai Это, вероятно, потому, что вы передаете отрицательные числа квадратного корня, что приводит к «NaN». Вы уверены, что ваше тестовое уравнение можно решить? – outlyer

+1

Он работает с адекватными номерами, например. 1,2,3 → нет ответа, 1, -5,6 → результат – outlyer

0

Нет такой вещи, как «Целое число», также как целое число, в Javascript, только Numbers.

Самый простой способ проверить, если они являются целыми числами, чтобы round их и сравнить с первоначальным значением:

if(Math.round(ans_1) === ans_1 && Math.round(ans_2) === ans_2) 
{ 
    document.calculator.total_1.value = ans_1; 
    document.calculator.total_2.value = ans_2; 
} 
else 
{ 
    document.calculator.total_3.value = ans_3; 
} 
+0

Благодарю вас за ответ, но этот тоже не работает. –

+0

На самом деле, CashVai's метод также является правильным способом проверки целых чисел – outlyer

+0

да, я заметил. Проблемы - это NaNs, как вы говорите – Rhumborl

0

Проверьте наличие остатка при делении на 1:

function isInt(n) { 
    return n % 1 === 0; 
} 

Если вы не знаете, что аргумент является номером -

function isInt(n){ 
     return Number(n)===n && n%1===0; 
} 

Смотрите это связывает

is_int() => Проверить, если переменная тип Integer и, если его содержание Integer

is_float() => Проверить, если переменная тип Float и если его содержание Float

Смежные вопросы