繁体   English   中英

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

[英]How to get first 2 non zero digits after decimal in javascript

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

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

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

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

这里有两个更快的解决方案(参见jsperf ):

解决方案1:

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

请注意,此值不会舍入到最小值,而是舍入到最接近的值: 0.0256给出0.026 ,而不是0.025 如果你真的想要圆到最小,请使用这个:

解决方案2:

var r = n.toFixed(20).match(/^-?\d*\.?0*\d{0,2}/)[0];

它也适用于负数。

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

对于具有多个小数的数字,您必须返回一个字符串,因为任何解析为数字都将返回科学记数法,因为在0.000000025666中将是2.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);
}

小提琴

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM