JavaScript中输入值的舍入

JavaScript中输入值的舍入,javascript,rounding,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){

我正在使用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";
        }
    }
试试这个方法

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=(输入)=>Number((输入+).replace(“.”,“”)。slice(0,4));
console.log(func(60.79));
控制台日志(func(876));
控制台日志(func(009.89));
console.log(func(29.8888))
  • 在正则表达式中,仅替换小数点(
  • 去掉乘以100的倍数
  • 使用
    切片(0,4)
    确保只包括最后4个字符
你应该可以走了

这是一个正在运行的exmaple:

var-lbs='94.32555%;
var res=“£”+parseFloat(磅替换(/\./g.)).replace(/\./g.)).slice(0,4));
控制台日志(res)请尝试以下操作:

Math.round(29.8888 * 100);

问题是什么?谢谢,您的代码工作正常,但当用户输入一个开头带有英镑的值时,它显示一个错误NaN,,,我希望,%作为有效的英镑符号通过正则表达式,,,我希望它通过regex@Pweb浮点运算可能导致精度损失,因此避免了同样的情况。我认为这里不需要正则表达式。