保留两位小数,但要求只显示一位小数,怎么实现?

1.要实现的效果:在相同的时间内完成设定数值的自加;
2.目前的方案:( 设定数值 - 初始数值 )/ 预期时长 = speed,以speed为自加变量;
3.目前的困境:speed精确到小数好几位,但要求显示的只有一位,如果直接保留一位,要么数值不变,要么不能实现预期效果;
请问怎么办?有没有什么方法能实现预期效果?
请输入代码

<!DOCTYPE html>
<html>
<head>
    <title>这是一个test例子</title>
</head>
<body>
<p id="test"></p>
<script>
function aa(starNum,endNum,duration){
    var i=starNum,
        speed=(endNum-starNum)/duration,
        sector=document.getElementById("test");
    sector.innerHTML=starNum;
    function bb(){
        if(i<endNum){
            i+=speed;
            sector.innerHTML=i;
        }else{
            clearInterval(timer);
            sector.innerHTML=endNum;
        }
    }
    var timer=setInterval(function(){
        bb();
    },100)
}
aa(0,10,7);
</script> 
</body>
</html>
阅读 4.8k
4 个回答

function bb(){

    if(i<endNum){
        i+=speed;
        sector.innerHTML=i.toFixed(1);//i.toFixed(1)并不会改变i的值,详细用法自己搜索
    }else{
        clearInterval(timer);
        sector.innerHTML=endNum;
    }
}

把function bb写成这样可否解决你的问题?

function bb(){
        if(i<endNum){
            i+=speed;
            i = i===10? i : +i.toFixed(1)
            sector.innerHTML=i;
        }else{
            clearInterval(timer);
            sector.innerHTML=endNum;
        }
    }

函数内部重新声明一个变量来保存i取一位小数的值,参与后面的运算。但是不改变i的值。

新手上路,请多包涵
function bb(){
    if(i<endNum){
        i+=speed;
        sector.innerHTML=(i*10>>0)/10;
    }else{
        clearInterval(timer);
        sector.innerHTML=endNum;
    }
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题