我有一个用例,例如
如果我首先输入任何数字,则应打印0.0和该数字。

例如,如果我输入1,则应生成为。输入仅应限制为数字。 1 ---> 0.01。然后在输入另一个数字时,它应该产生如下输出
例如,如果我加2 12 ---> 0.12那么如果我加3,它应该产生的输出为123 ---> 1.23类似地,对于4它应该给出12.34

我尝试输入1到9,预期的输出是1234567.8´ but it is giving 1234567.8900000001`

请帮我。这是我尝试的代码



function decimalCheck() {
  var dec = document.getElementById('number').value;
  var flag = 0;

  if (dec.length === 1) {
    document.getElementById('number').value = dec * 0.01;
    flag++;
  }


  if (dec.includes(".")) {
    var res = dec.substring(dec.indexOf(".") + 1);
    console.log("res value is .............." + res);
    if (res.length > 2) {
      dec = dec * 10;
      console.log("dec value is ............." + dec);
      document.getElementById('number').value = dec;
      //alert(dec);
    }
  }
}

Enter a number<input id="number" type="text" onkeyup="decimalCheck()" style="direction: rtl; "></input>

最佳答案

您可以通过在输出值之前添加.toFixed(2)fixed-point notation)来解决此问题。这将格式化为2位小数。



function decimalCheck() {
  var dec = document.getElementById('number').value;
  var flag = 0;

  if (dec.length === 1) {
    document.getElementById('number').value = dec * 0.01;
    flag++;
  }


  if (dec.includes(".")) {
    var res = dec.substring(dec.indexOf(".") + 1);
    console.log("res value is .............." + res);
    if (res.length > 2) {
      dec = dec * 10;
      console.log("dec value is ............." + dec.toFixed(2));
      document.getElementById('number').value = dec.toFixed(2);
      //alert(dec);
    }
  }
}

Enter a number<input id="number" type="text" onkeyup="decimalCheck()" style="direction: rtl;"></input>

关于javascript - javascript从右到左格式化为2个小数位,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57905952/

10-11 13:19