javascriptparsingtrailing

JavaScript - Keep trailing zeroes


I want to parse a string and I used parseFloat(), but it removes all the trailing zeroes. How to prevent this - I need to parse the string exactly - if I have 2.5000, I need exactly the same result as a floating-point number - 2.5000.


Solution

  • You can do

    parseFloat(2.5).toFixed(4);
    

    If you need exactly the same floating point you may have to figure out the amount

    function parseFloatToFixed(string) {
      return parseFloat(string).toFixed(string.split('.')[1].length);
    }
    
    console.log(parseFloatToFixed('2.54355'));
    

    But i don't really understand why you even need to use parseFloat then? Numbers in javascript do not retain the floating-point count. so you would have to keep them as strings, and calculate against them as floats.

    Also don't forget toFixed may have weird rounding issues in different browsers, for example

    console.log((0.1).toFixed(20));
    

    MODERN UPDATE

    You can now use Intl.NumberFormat which is no longer impacted by the odd rounding issues:

    const toFixed = new Intl.NumberFormat('en-US', { minimumFractionDigits: 20 })
    
    console.log(toFixed.format(0.1));