Javascript智能舍入

Tri*_*tan 7 javascript math rounding

我目前需要将数字舍入到最接近的主要数字.(不确定这里的正确用语是什么)

但是看看我想要实现的一个例子

IE:

 13 // 20
 349 // 400
 5645 // 6000
 9892 // 10000
 13988 // 20000
 93456 // 100000
 231516 // 300000

etc. etc.
Run Code Online (Sandbox Code Playgroud)

我已经实现了这样做的方法,但它非常痛苦,只处理数百万,如果我想要它更高,我需要添加更多if语句(是的,我看到我如何实现它:P我不是很自豪,但是大脑卡住了)

必须有一些东西已经存在但谷歌并没有帮助我很可能是因为我不知道我想做的那种舍入的正确术语

rab*_*dde 14

<script type="text/javascript">
    function intelliRound(num) {
        var len=(num+'').length;
        var fac=Math.pow(10,len-1);
        return Math.ceil(num/fac)*fac;
    }
    alert(intelliRound(13));
    alert(intelliRound(349));
    alert(intelliRound(5645));
    // ...
</script>
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/fCLjp/


Ale*_* K. 8

单程;

var a = [13, // 20
 349, // 400
 5645, // 6000
 9892, // 10000
 13988, // 20000
 93456, // 100000
 231516 // 300000
]

for (var i in a) {
    var num = a[i];
    var scale = Math.pow(10, Math.floor(Math.log(num) / Math.LN10));
    print([ num, Math.ceil(num / scale) * scale ])
}

13,20
349,400
5645,6000
9892,10000
13988,20000
93456,100000
231516,300000
Run Code Online (Sandbox Code Playgroud)