[英]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.