Вычислить два десятичных числа | Калькулятор JavaScript

#javascript

#javascript

Вопрос:

Я создаю калькулятор на javascript, но у меня возникает небольшая проблема при выполнении операции с двумя десятичными числами. Проблема в том, что я не могу вставить другое десятичное число после другого:

изображение 1

Я хотел бы добавить еще одно десятичное число сразу после знака математических операций и выглядеть примерно так:

изображение 2

1: Вот мой код:

 function calcular(tipo, valor) {

  //.           TIPOS              

  //. TIPO AÇÃO    
  if (tipo === 'acao') {

    //; AÇÃO DE VALOR C  (LIMPAR O VISOR)  
    if (valor === 'c') {
      document.getElementById('resultado').value = ''
    }

    //; AÇÕES DE VALOR    | - | * | /  CONTATENAR  
    if (valor === ' ' || valor === '-' || valor === '*' || valor === '/') {
      document.getElementById('resultado').value  = valor
    }


    if (valor === '=') {
      var valorCampo = eval(document.getElementById('resultado').value)
      document.getElementById('resultado').value = valorCampo
    }



    if (valor === '.') {
      var conteudo = document.getElementById('resultado').value
      conteudo.includes('.') ? document.getElementById('resultado').value : document.getElementById('resultado').value  = valor

    }



    if (valor === 'b') {
      document.getElementById('resultado').value = document.getElementById('resultado').value.substring(0, document.getElementById('resultado').value.length - 1)



    }








    //. TIPO VALOR    
  } else if (tipo === 'valor') {
    //; CONTATENAÇÃO DOS VALORES 
    document.getElementById('resultado').value  = valor

  }




}  
 .calculadora {
  margin-top: 40px;
  border: solid 1px #000;
  padding: 20px;
  background-color: #2E2E2E;
  border-radius: 10px;
  box-shadow: 1px 1px 5px #000;
}

.btn {
  width: 60px;
  height: 50px;
  margin: 5px;
  box-shadow: 1px 1px 1px #000;
}

.clear {
  width: 60px;
}

.enter {
  height: 110px;
}

.zero {
  width: 130px;
}

.resultado {
  text-align: right;
  font-size: 20px;
  margin-top: 10px;
  margin-bottom: 20px;
  border: solid 1px #000;
  box-shadow: 1px 1px 1px #000;
}  
 <html>

<head>
  <title>Calculadora</title>

  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">

     <script src="https://kit.fontawesome.com/0c183dd402.js" crossorigin="anonymous"></script>



</head>

<body style="background: #D9D9D9">

  <div class="container">
    <div class="row">
      <div class="col d-flex justify-content-center">
        <br />

        <div class="calculadora">
          <input id="resultado" type="text" class="form-control resultado" placeholder="0" disabled="disabled" />

          <div class="row">

            <button onclick="calcular('acao', '*')" type="button" class="btn btn-dark btn-lg font-weight-light">x</button>
            <button onclick="calcular('acao', '/')" type="button" class="btn btn-dark btn-lg font-weight-light">/</button>
            <button onclick="calcular('acao', 'c')" type="button" class="btn btn-dark btn-lg clear font-weight-light">C</button>
            <button onclick="calcular('acao', 'b')" type="button" class="btn btn-dark btn-lg font-weight-light"><i class="fas fa-backspace"></i></button>

          </div>

          <div class="row">
            <button onclick="calcular('valor', 7)" type="button" class="btn btn-dark btn-lg font-weight-light">7</button>
            <button onclick="calcular('valor', 8)" type="button" class="btn btn-dark btn-lg font-weight-light">8</button>
            <button onclick="calcular('valor', 9)" type="button" class="btn btn-dark btn-lg font-weight-light">9</button>
            <button onclick="calcular('acao', '-')" type="button" class="btn btn-dark btn-lg font-weight-light">-</button>
          </div>

          <div class="row">
            <button onclick="calcular('valor', 4)" type="button" class="btn btn-dark btn-lg font-weight-light">4</button>
            <button onclick="calcular('valor', 5)" type="button" class="btn btn-dark btn-lg font-weight-light">5</button>
            <button onclick="calcular('valor', 6)" type="button" class="btn btn-dark btn-lg font-weight-light">6</button>
            <button onclick="calcular('acao', ' ')" type="button" class="btn btn-dark btn-lg font-weight-light"> </button>
          </div>

          <div class="row">
            <button onclick="calcular('valor', 1)" type="button" class="btn btn-dark btn-lg font-weight-light">1</button>
            <button onclick="calcular('valor', 2)" type="button" class="btn btn-dark btn-lg font-weight-light">2</button>
            <button onclick="calcular('valor', 3)" type="button" class="btn btn-dark btn-lg font-weight-light">3</button>
            <button onclick="calcular('acao', '=')" type="button" class="btn btn-dark btn-lg enter">=</button>
          </div>

          <div class="row" style="margin-top: -60px">
            <button onclick="calcular('valor', 0)" type="button" class="btn btn-dark zero btn-lg font-weight-light">0</button>
            <button onclick="calcular('acao', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
          </div>

        </div>
      </div>
    </div>
  </div>

  
</body>

</html>  

Комментарии:

1. Проблема в том, что вы работаете со строкой по умолчанию, функция parseInt или parseFloat может помочь преобразовать значения в числа.

2. но проблема в данном случае в том, что я не знаю, как включить второе десятичное число после математических операций (/ * -)

Ответ №1:

Измените это:

 <button onclick="calcular('acao', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
  

К этому:

 <button onclick="calcular('valor', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
  

Все, что было изменено, было 'acao' на 'valor' .

 function calcular(tipo, valor) {

  //.           TIPOS              

  //. TIPO AÇÃO    
  if (tipo === 'acao') {

    //; AÇÃO DE VALOR C  (LIMPAR O VISOR)  
    if (valor === 'c') {
      document.getElementById('resultado').value = ''
    }

    //; AÇÕES DE VALOR    | - | * | /  CONTATENAR  
    if (valor === ' ' || valor === '-' || valor === '*' || valor === '/') {
      document.getElementById('resultado').value  = valor
    }


    if (valor === '=') {
      var valorCampo = eval(document.getElementById('resultado').value)
      document.getElementById('resultado').value = valorCampo
    }



    if (valor === '.') {
      var conteudo = document.getElementById('resultado').value
      conteudo.includes('.') ? document.getElementById('resultado').value : document.getElementById('resultado').value  = valor

    }



    if (valor === 'b') {
      document.getElementById('resultado').value = document.getElementById('resultado').value.substring(0, document.getElementById('resultado').value.length - 1)



    }








    //. TIPO VALOR    
  } else if (tipo === 'valor') {
    //; CONTATENAÇÃO DOS VALORES 
    document.getElementById('resultado').value  = valor

  }




}  
 .calculadora {
  margin-top: 40px;
  border: solid 1px #000;
  padding: 20px;
  background-color: #2E2E2E;
  border-radius: 10px;
  box-shadow: 1px 1px 5px #000;
}

.btn {
  width: 60px;
  height: 50px;
  margin: 5px;
  box-shadow: 1px 1px 1px #000;
}

.clear {
  width: 60px;
}

.enter {
  height: 110px;
}

.zero {
  width: 130px;
}

.resultado {
  text-align: right;
  font-size: 20px;
  margin-top: 10px;
  margin-bottom: 20px;
  border: solid 1px #000;
  box-shadow: 1px 1px 1px #000;
}  
 <html>

<head>
  <title>Calculadora</title>

  <!-- Latest compiled and minified CSS -->
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta.2/css/bootstrap.min.css" integrity="sha384-PsH8R72JQ3SOdhVi3uxftmaW6Vc51MKb0q5P2rRUpPvrszuE4W1povHYgTpBfshb" crossorigin="anonymous">

     <script src="https://kit.fontawesome.com/0c183dd402.js" crossorigin="anonymous"></script>



</head>

<body style="background: #D9D9D9">

  <div class="container">
    <div class="row">
      <div class="col d-flex justify-content-center">
        <br />

        <div class="calculadora">
          <input id="resultado" type="text" class="form-control resultado" placeholder="0" disabled="disabled" />

          <div class="row">

            <button onclick="calcular('acao', '*')" type="button" class="btn btn-dark btn-lg font-weight-light">x</button>
            <button onclick="calcular('acao', '/')" type="button" class="btn btn-dark btn-lg font-weight-light">/</button>
            <button onclick="calcular('acao', 'c')" type="button" class="btn btn-dark btn-lg clear font-weight-light">C</button>
            <button onclick="calcular('acao', 'b')" type="button" class="btn btn-dark btn-lg font-weight-light"><i class="fas fa-backspace"></i></button>

          </div>

          <div class="row">
            <button onclick="calcular('valor', 7)" type="button" class="btn btn-dark btn-lg font-weight-light">7</button>
            <button onclick="calcular('valor', 8)" type="button" class="btn btn-dark btn-lg font-weight-light">8</button>
            <button onclick="calcular('valor', 9)" type="button" class="btn btn-dark btn-lg font-weight-light">9</button>
            <button onclick="calcular('acao', '-')" type="button" class="btn btn-dark btn-lg font-weight-light">-</button>
          </div>

          <div class="row">
            <button onclick="calcular('valor', 4)" type="button" class="btn btn-dark btn-lg font-weight-light">4</button>
            <button onclick="calcular('valor', 5)" type="button" class="btn btn-dark btn-lg font-weight-light">5</button>
            <button onclick="calcular('valor', 6)" type="button" class="btn btn-dark btn-lg font-weight-light">6</button>
            <button onclick="calcular('acao', ' ')" type="button" class="btn btn-dark btn-lg font-weight-light"> </button>
          </div>

          <div class="row">
            <button onclick="calcular('valor', 1)" type="button" class="btn btn-dark btn-lg font-weight-light">1</button>
            <button onclick="calcular('valor', 2)" type="button" class="btn btn-dark btn-lg font-weight-light">2</button>
            <button onclick="calcular('valor', 3)" type="button" class="btn btn-dark btn-lg font-weight-light">3</button>
            <button onclick="calcular('acao', '=')" type="button" class="btn btn-dark btn-lg enter">=</button>
          </div>

          <div class="row" style="margin-top: -60px">
            <button onclick="calcular('valor', 0)" type="button" class="btn btn-dark zero btn-lg font-weight-light">0</button>
            <button onclick="calcular('valor', '.')" type="button" class="btn btn-dark btn-lg font-weight-light">.</button>
          </div>

        </div>
      </div>
    </div>
  </div>

  
</body>

</html>