Javascript parseFloat.toPreceision只添加零

Javascript parseFloat.toPreceision只添加零,javascript,numbers,parsefloat,Javascript,Numbers,Parsefloat,我将数字/字符串0.001发送到下面的函数: SignificantFigures = 4; function LimitNumberOfDigits(num) { var tempStr = ""; if (isNaN(num)) return "\xD8"; else{ if (parseFloat(num) === 0 || (num.toString().indexOf('.') === -1 && parseInt

我将数字/字符串0.001发送到下面的函数:

SignificantFigures = 4;
function LimitNumberOfDigits(num) {
    var tempStr = "";
    if (isNaN(num))
        return "\xD8";
    else{
        if (parseFloat(num) === 0 || (num.toString().indexOf('.') === -1 && parseInt(num) < 9999) || num.toString().length <= 4) {
            return num;
        }
        tempStr = parseFloat(num).toPrecision(SignificantFigures);
        if (tempStr.indexOf("e") > -1) {
            var startE = tempStr.indexOf("e");
            var endE = 0;
            for (var i = startE +2 ; i < tempStr.length; i++ ) { // + to ignore e and sign (+ or - )
                if(parseInt(tempStr[i], 10) > 0) {
                    endE = i;
                }else {
                    break;
                }
            }
            if (startE + 2 === endE) {
                var pow = tempStr[endE];
            } else {
                var pow = tempStr.substring(startE +2 ,endE);
            }
            return tempStr.substring(0,startE) + "*10<sup>"+ pow +"</sup>";
        }else {
            return parseFloat(num).toPrecision(SignificantFigures);
        }
    }
}
signifintfigures=4;
函数限制NumberOfDigits(num){
var tempStr=“”;
if(isNaN(num))
返回“\xD8”;
否则{
if(parseFloat(num)==0 | | |(num.toString().indexOf('.')==-1&&parseInt(num)<9999)| | num.toString().length-1){
var startE=tempStr.indexOf(“e”);
var endE=0;
对于(var i=startE+2;i0){
endE=i;
}否则{
打破
}
}
如果(开始+2==结束){
var-pow=tempStr[endE];
}否则{
var pow=临时子串(起始+2,结束);
}
返回tempStr.substring(0,startE)+“*10”+pow+”;
}否则{
返回parseFloat(num).toPrecision(有效数字);
}
}
}
当我发送0.2甚至0.11时,我会得到0.2000和0.1100。 这里的问题是toPrecision的行为就像ToFixed一样。 想法

编辑


我想要什么?如此简单,如果一个数字需要更改,例如0.012312312041,它应该是0.0123,像0.12或28这样的数字应该保持不变。

对于这些数字,
toPrecision
toFixed
的行为将是相同的。例如,0.2到2个有效数字=0.20。这是因为前导零并不重要。用0.004到3个sig图和0.004
toFixed(3)
-你会看到不同。那么我必须做些什么才能保留我不需要转换的数字?同样,像28这样的数字会变成28.00k,那么我可以向这个函数添加什么来做我需要的呢?很简单。首先将数字转换为字符串。然后检查字符串的长度。如果太长,则设置数字的精度。瞧!短数字保持短,长数字缩短。