簡體   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