如何在javascript中获得十进制后的前2个非零数字

时间:2014-05-27 10:46:18

标签: javascript

我需要从十进制数字中获取前2个非零数字。如何实现这一目标?

假设我有0.000235的数字然后我需要0.00023,如果数字是0.000000025666那么我的函数应该返回0.000000025。

任何人都可以知道如何在javascript中实现这一目标吗?

结果应该是浮点数而不是字符串。

3 个答案:

答案 0 :(得分:9)

以下是两个更快的解决方案(请参阅jsperf):

解决方案1:

var n = 0.00000020666;
var r = n.toFixed(1-Math.floor(Math.log(n)/Math.log(10)));

请注意,此值不会舍入到最小值,但最接近:0.0256得{4},而不是0.026。如果你真的想要圆到最小,请使用这个:

解决方案2:

0.025

它也适用于负数。

答案 1 :(得分:3)

var myNum = 0.000256
var i = 1
while(myNum < 10){
    myNum *= 10
    i *= 10
}
var result = parseInt(myNum) / i

答案 2 :(得分:2)

对于具有多个小数的数字,您必须返回一个字符串,因为任何解析为数字都会返回科学记数法,因为在0.0000000256662.5666e-8

function round(n, what) {
    var i = 0;
    if (n < 1) {
        while(n < 1) {
            n = n*10;
            i++;
        }
    }
    return '0.' + (new Array(i)).join('0') + n.toFixed(what).replace('.','').slice(0,-1);
}

FIDDLE