Search code examples
javascriptyuinumber-formattingyui3

How to use Y.Number.format and decimalPlaces?


I'm trying use Y.Number.format for formatting my numbers. I need to use 6 decimalPlaces but if there is one and and don't use right zero-padding if the source number has no this count of decimals.

Basically I need the following:

YUI().use("datatype-number", function(Y) {
    console.log(Y.Number.format(1234.567, {
       thousandsSeparator: ".",
       decimalPlaces: 2
    }
));

//Result is: 1234.57

and

YUI().use("datatype-number", function(Y) {
    console.log(Y.Number.format(1234.567, {
       thousandsSeparator: ".",
       decimalPlaces: 6
    }
));

//Result is 1234.567

How could I achieve the results above?


Solution

  • Maybe this will work (num%1) is num modulo 1. Divide num by 1 and see what's left over.

    3%2=1
    12%5=2
    1.0001%1=0.0001
    

    Example of how you can use it:

    ;YUI().use("datatype-number", function(Y) {
        var num=1.0000;//no decimal places
        var decPlaces=((num%1)>0.0000005)?6:0;
        console.log(Y.Number.format(num, {
           thousandsSeparator: ".",
           decimalPlaces: decPlaces
        }));
        num=1.0010;//some decimal places
        decPlaces=((num%1)>0.0000005)?6:0;//6 if dec places 0 if not
        console.log(Y.Number.format(num, {
           thousandsSeparator: ".",
           decimalPlaces: decPlaces
        }));
        num=1.0000001;//not enough decimal places
        decPlaces=((num%1)>0.0000005)?6:0;//6 if dec places 0 if not
        console.log(Y.Number.format(num, {
           thousandsSeparator: ".",
           decimalPlaces: decPlaces
        }));    
    });