parseFloat.toPreceision просто добавляет нули
Я отправляю число / строку 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, я получаю как 0.2000 и 0.1100. Проблема здесь в том, что toPrecision действует как ToFixed. Идеи?
РЕДАКТИРОВАТЬ
Что я хочу? просто, если числа должны быть изменены, например, 0,012312312041, то это должно быть 0,0123, такие числа, как 0,12 или 28, должны оставаться неизменными.