Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用javascript在计算器中添加小数?_Javascript_Html_Css_Decimal - Fatal编程技术网

如何使用javascript在计算器中添加小数?

如何使用javascript在计算器中添加小数?,javascript,html,css,decimal,Javascript,Html,Css,Decimal,我需要有关计算器中十进制按钮的帮助。它现在不知怎么工作了,但我需要更加完善它,有点不知道怎么做。所以,如果你知道如何让它变得更好,请帮助。因此,如果你知道如何修复它,请做。多谢各位 如何在printOutput中添加小数 问题是,当我按下数字,然后按下十进制,它可以工作,例如2.34,但问题是你可以在每个数字之后按下十进制,例如2.3.4,这不是我想要的 这是一个javascript代码>>>>>> function getHistory() { return document.getE

我需要有关计算器中十进制按钮的帮助。它现在不知怎么工作了,但我需要更加完善它,有点不知道怎么做。所以,如果你知道如何让它变得更好,请帮助。因此,如果你知道如何修复它,请做。多谢各位

  • 如何在printOutput中添加小数

  • 问题是,当我按下数字,然后按下十进制,它可以工作,例如2.34,但问题是你可以在每个数字之后按下十进制,例如2.3.4,这不是我想要的

  • 这是一个javascript代码>>>>>>

    function getHistory() {
      return document.getElementById("history-value").innerHTML;
    }
    function printHistory(num) {
      document.getElementById("history-value").innerHTML = num;
    }
    function getOutput() {
      return document.getElementById("output-value").innerHTML;
    }
    function printOutput(num) {
      if (num == "") {
        document.getElementById("output-value").innerHTML = num;
      } else {
        document.getElementById("output-value").innerHTML = getFormatNumber(num);
      }
    }
    
    function getFormatNumber(num) {
      if (num == "-") {
        return "";
      }
      if (num.length > 10) {
        num = num.substr(0, 10);
        alert("it tooo much!");
      }
      var n = Number(num);
      if (n === "Infinity") {
        value = "0";
        alert("Error");
      } else {
        var value = n.toLocaleString("en");
      }
      return value;
    }
    
    function reverseNumberFormat(num) {
      return Number(num.replace(/,/g, ""));
    }
    
    let operator = document.getElementsByClassName("operator");
    for (let i = 0; i < operator.length; i++) {
      operator[i].addEventListener("click", function () {
        if (this.id == "clear") {
          printOutput("");
          printHistory("");
        } else if (this.id == "backspace") {
          let output = reverseNumberFormat(getOutput()).toString();
          if (output) {
            output = output.substr(0, output.length - 1);
            printOutput(output);
          }
        } else {
          let output = getOutput();
          let history = getHistory();
          if (output == "" && history != "") {
            if (isNaN(history[history.length - 1])) {
              history = history.substr(0, history.length - 1);
            }
          }
          if (output != "" || history != "") {
            output = output == "" ? output : reverseNumberFormat(output);
            history = history + output;
            if (this.id == "=") {
              let result = eval(history);
              printOutput(result);
              printHistory("");
            } else {
              history = history + this.id;
              printHistory(history);
              printOutput("");
            }
          }
        }
      });
    }
    
    let number = document.getElementsByClassName("number");
    for (let i = 0; i < number.length; i++) {
      number[i].addEventListener("click", function () {
        let output = reverseNumberFormat(getOutput());
        if (output != NaN) {
          output += this.id;
          printOutput(output);
        }
      });
    }
    
    函数getHistory(){ return document.getElementById(“历史值”).innerHTML; } 函数printHistory(num){ document.getElementById(“历史值”).innerHTML=num; } 函数getOutput(){ return document.getElementById(“输出值”).innerHTML; } 函数printOutput(num){ 如果(num==“”){ document.getElementById(“输出值”).innerHTML=num; }否则{ document.getElementById(“输出值”).innerHTML=getFormatNumber(num); } } 函数getFormatNumber(num){ 如果(数值=“-”){ 返回“”; } 如果(数值长度>10){ num=num.substr(0,10); 警惕(“太多了!”); } var n=数量(num); 如果(n==“无穷大”){ value=“0”; 警报(“错误”); }否则{ var值=n.toLocaleString(“en”); } 返回值; } 函数反转枚举格式(num){ 返回编号(num.replace(/,/g,”); } let operator=document.getElementsByClassName(“operator”); for(设i=0;i
    
    

    C 总工程师 % ÷ 7. 8. 9 &时代; 4. 5. 6. - 1. 2. 3. + 0 . =
    一些更改是必要的

    第一(1):将点
    运算符类名更改为
    编号
    ,如下所示

    <button class="number" id=".">.</button>
    
    -属于
    类别号的所有元素的
    处理程序中的第三(3)个
    事件处理程序

    let number = document.getElementsByClassName("number");
    for (let i = 0; i < number.length; i++) {
      number[i].addEventListener("click", function () {
        let output = reverseNumberFormat(getOutput());
    
        if (output != NaN ) {
          output += this.id;  
          // CHECK HERE IF output is already a valid decimal number 
          let matchCount = output.match(/\./g) ;
        
          if( matchCount && matchCount.length > 1 ) return  ; // => already decimal number 
          printOutput(output);
       }
    
     });
    }
    
    注:这是有益的,它在我这方面的工作,但不要犹豫,告诉我任何错误或问题在未来

    function getFormatNumber(num) {
      if (num == "-") {
        return "";
      }
      if (num.length > 10) {
        num = num.substr(0, 10);
        alert("it tooo much!");
      }
    
      // to check whether a dot is placed just a the end of num like 6.
      let lastIndexOfDot  = num.toString().lastIndexOf(".") ; 
      let isDotted  =lastIndexOfDot  == false ? false: lastIndexOfDot == num.length-1 ? true : false ; 
    
      var n =  Number(num); 
    
      if (n === "Infinity") {
        value = "0";
        alert("Error");
      } else {
        var value = n.toLocaleString("en");
      }
       // if dotted is true then value has a dot at the end like : 5. so we return value  with its dot 
       if (isDotted ) return value +"." ; 
    
       return value;  // no dot at the end 
    }
    
    let number = document.getElementsByClassName("number");
    for (let i = 0; i < number.length; i++) {
      number[i].addEventListener("click", function () {
        let output = reverseNumberFormat(getOutput());
    
        if (output != NaN ) {
          output += this.id;  
          // CHECK HERE IF output is already a valid decimal number 
          let matchCount = output.match(/\./g) ;
        
          if( matchCount && matchCount.length > 1 ) return  ; // => already decimal number 
          printOutput(output);
       }
    
     });
    }
    
    function reverseNumberFormat(num) {
      return num.replace(/,/g, "");  // => Nb: conversion not necessary
    }