我已经使用JQuery和javascript做了一个微调器,但是我的步进值有些错误。例如,如果我的步长值为0.1,则有时它会起作用,并且0.1会增加或减少,但大多数情况下,它将添加0.09999999999或某个长的十进制数,该数与我期望和想要的数相距小数位。
hiddenincrementorEl$.click(function () {
var currentInput$ = $(this).prevAll("input").first();
var currentvalue$ = $(currentInput$).val();
//if no step attribute set, default to 1
if(currentInput$.attr("step"))
var currentStepValue$ = currentInput$.attr("step")
else {
var currentStepValue$ = "1";
}
console.log(currentStepValue$)
var newValue$ = Number(currentvalue$) + Number(currentStepValue$);
$currentMax = currentInput$.attr("max")
if( newValue$ > $currentMax){
newValue$ = $currentMax;
}
console.log(newValue$);
currentInput$.val(newValue$);
Calculate();
});
上面是我的增量器功能,它位于微调器功能内。
我使用.attr("step")
或默认值为1来获取步长值。在控制台中记录该步长似乎正常,并且始终返回正确的步长。
我认为问题一定是当我将它们都转换为数字时避免将它们串联为一个字符串,但是我还能怎么做呢?为什么我的方法会产生这个奇怪的错误?