计算两个小数 | JavaScript计算器

3

我正在用JavaScript制作一个计算器,但是在执行两个小数的操作时遇到了一些问题。问题是我无法在另一个小数后面插入另一个小数:

image1

我想在数学运算符号后面再添加一个小数,看起来像这样:

image2

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函数可以帮助将值转换为数字。 - Tom
但是问题在于,我不知道如何在数学运算(/ * + -)之后包含第二个小数。 - willian
1个回答

2

把这个改成:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接