舍入JavaScript中的输入值

时间:2017-11-30 07:16:14

标签: javascript rounding

我正在使用Js创建一个转换器应用程序并且它工作正常,我想当用户输入带小数位的值时,它会被乘以100向上舍入,而如果输入没有小数位,则输出应该保持不变并将最终输出切片为最多4个字符,,,

例如 60.79(6079),876(876),009.89(989),29.8888(2988)

任何帮助都会受到高度赞赏吗?

document.getElementById('Input').addEventListener('input', converter);

    function converter(e){
        var output = document.getElementById('output');
        var error = document.getElementById('errors');
        var reg= /£?\d+(?:\.\d+)?p?\b/ ;

        var lbs = e.target.value;

        if(reg.test(lbs)){
            error.innerText = "";
            output.style.display = 'block';
            //Convert to sterling pounds
           document.getElementById('sterling').innerHTML = '£' + parseFloat(lbs.replace(/[^0-9\.]/g, '')) * 100 ;
          }

        else{
            error.innerText = "Invalid Input";
        }
    }

3 个答案:

答案 0 :(得分:0)

尝试这种方法

var input = 67.89;
var output = Number((input + "").replace(".", "").slice(0,4));

然后,您可以通过£符号

为输出添加前缀
output = "£ " + output;

假设再次获取输入以进行转换,则将其设为

var input = e.target.value;
input = isNaN(input) ? +input.replace(/\£/, "") : +input;
var output = Number((input + "").replace(".", "").slice(0,4));

<强>演示

var func = (input) => Number((input + "").replace(".", "").slice(0,4));

console.log( func(60.79) );
console.log( func(876) );
console.log( func(009.89) );
console.log( func(29.8888) );

注意

  • 避免算术运算(将浮点数乘以100),以避免精度损失

答案 1 :(得分:0)

  • 在正则表达式中,只替换小数点(.)。
  • 删除多人游戏100。
  • 使用slice(0,4)确保仅包含最后4个字符。

你应该好好去。

这是一个正在运行的例子:

&#13;
&#13;
var lbs = '94.32555£';
var res = '£ ' + parseFloat(lbs.replace(/\./g,'').replace(/\£/g,'').slice(0,4));
console.log(res);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

尝试以下方法:

Math.round(29.8888 * 100);