![](/img/trans.png)
[英]JavaScript: How can I split a decimal number into 2 part according to where the first zero occurs after a non-zero integer
[英]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.