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