Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/70.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 自定义jQuery输入_Javascript_Jquery_Html - Fatal编程技术网

Javascript 自定义jQuery输入

Javascript 自定义jQuery输入,javascript,jquery,html,Javascript,Jquery,Html,我试图实现一个输入,当我按下上下键时,它递增/递减0.001,当我按下左/右键时,它递增/递减0.01。然而,当我点击左键几次时,我会得到类似于0.060000000000000005的值,而不是0.06。我怎么修理它 HTML 我认为这种行为是由浮点运算精度/错误()引起的 你能做的就是强制执行固定数量的小数(所以基本上,对结果进行四舍五入)。您可以使用toFixed()方法选择确切的位数,也可以使用toPrecision()方法选择要显示的有效位数。请参阅:和我认为这种行为是由浮点运算精度

我试图实现一个输入,当我按下上下键时,它递增/递减0.001,当我按下左/右键时,它递增/递减0.01。然而,当我点击左键几次时,我会得到类似于0.060000000000000005的值,而不是0.06。我怎么修理它

HTML
我认为这种行为是由浮点运算精度/错误()引起的


你能做的就是强制执行固定数量的小数(所以基本上,对结果进行四舍五入)。您可以使用
toFixed()
方法选择确切的位数,也可以使用
toPrecision()
方法选择要显示的有效位数。请参阅:和

我认为这种行为是由浮点运算精度/错误()引起的


你能做的就是强制执行固定数量的小数(所以基本上,对结果进行四舍五入)。您可以使用
toFixed()
方法选择确切的位数,也可以使用
toPrecision()
方法选择要显示的有效位数。请参阅:

我认为问题在于,java浮点计算并不总是准确的,而且存在精度错误

现在这取决于你在做什么样的计算

如果你 不想看到所有这些额外的小数位:只需格式化 显示时,结果四舍五入到固定的小数位数 它。

function getLocalDecimalSeparator() {
    var n = 1.1;
    return n.toLocaleString().substring(1,2);
}

function parseLocalFloat(num) {
    return Number(num.replace(getLocalDecimalSeparator(), '.'));
}

$('#in').on("change", function(){
    var x = parseLocalFloat($(this).val());

    //Round it to 3 decimal places
    $('#out').html(Math.round(x * 1000) / 1000);


});

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){
        $(this).val(+$(this).val() + +0.01);
    }
    if(e.keyCode == 39){
        $(this).val(+$(this).val() - +0.01);
    }

    $(this).change();
});
如果没有可用的十进制数据类型,请使用整数(参见示例)。

function getLocalDecimalSeparator() {
    var n = 1.1;
    return n.toLocaleString().substring(1,2);
}

function parseLocalFloat(num) {
    return Number(num.replace(getLocalDecimalSeparator(), '.'));
}

$('#in').on("change", function(){

    //Display as float
    var x = parseLocalFloat($(this).val())/1000;

    $('#out').html(x);
});

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){

        //Add integer
        $(this).val(+$(this).val() + +1);

    }
    if(e.keyCode == 39){

        //Add integer
        $(this).val(+$(this).val() - +1);

    }

    $(this).change();
});

我认为问题在于,java浮点计算并不总是精确的,而且存在精度错误

现在这取决于你在做什么样的计算

如果你 不想看到所有这些额外的小数位:只需格式化 显示时,结果四舍五入到固定的小数位数 它。

function getLocalDecimalSeparator() {
    var n = 1.1;
    return n.toLocaleString().substring(1,2);
}

function parseLocalFloat(num) {
    return Number(num.replace(getLocalDecimalSeparator(), '.'));
}

$('#in').on("change", function(){
    var x = parseLocalFloat($(this).val());

    //Round it to 3 decimal places
    $('#out').html(Math.round(x * 1000) / 1000);


});

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){
        $(this).val(+$(this).val() + +0.01);
    }
    if(e.keyCode == 39){
        $(this).val(+$(this).val() - +0.01);
    }

    $(this).change();
});
如果没有可用的十进制数据类型,请使用整数(参见示例)。

function getLocalDecimalSeparator() {
    var n = 1.1;
    return n.toLocaleString().substring(1,2);
}

function parseLocalFloat(num) {
    return Number(num.replace(getLocalDecimalSeparator(), '.'));
}

$('#in').on("change", function(){

    //Display as float
    var x = parseLocalFloat($(this).val())/1000;

    $('#out').html(x);
});

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){

        //Add integer
        $(this).val(+$(this).val() + +1);

    }
    if(e.keyCode == 39){

        //Add integer
        $(this).val(+$(this).val() - +1);

    }

    $(this).change();
});

使用这部分代码代替您的

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){
        $(this).val(+$(this).val() +0.01);
        return false;
    }
    if(e.keyCode == 39){
        $(this).val(+$(this).val() - 0.01);
        return false;
    }

    $(this).change();
});

使用这部分代码代替您的

$('#in').on("keydown", function(e){

    if(e.keyCode == 37){
        $(this).val(+$(this).val() +0.01);
        return false;
    }
    if(e.keyCode == 39){
        $(this).val(+$(this).val() - 0.01);
        return false;
    }

    $(this).change();
});