parseFloat.toPreceision只是添加了零

时间:2013-07-24 07:48:52

标签: 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(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);
        }
    }
}

当我发送0.2或甚至0.11 im时,得到0.2000和0.1100。 这里的问题是toPrecision就像ToFixed一样。 想法?

修改

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

0 个答案:

没有答案