I searched and only found this one related to my question, but not exactly the same, as I\'m using toFixed rather than toPrecision. Why does toPrecision return a String?
As mentioned in docs, toFixed returns
A string representing the given number using fixed-point notation
In case you need to use the returned result as a number, you can use built-in object Number:
var oldv = parseFloat(Math.PI).toFixed(2);
console.log( oldv );
console.log( typeof oldv ); // returns string
var num = Number(oldv);
console.log( num );
console.log( typeof num ); // returns number