NumberFormat helps you to format and parse numbers for any locale. Your code can be completely independent of the locale conventions for decimal points, thousands-separators, or even the particular decimal digits used, or whether the number format is even decimal.

1 Number Format

To use number format you must create a class instance with appropriate locale.

Copy
<script>
    var NumberFormatUs = new Ax.text.NumberFormat("us");
    
    console.log(NumberFormatUs.format(1234.123, "000000.00"));
    console.log(NumberFormatUs.format(1234.128, "000000.00"));
    console.log(NumberFormatUs.format(1234.128, "000000.0000"));
    
    console.log("Localized formatting");
    var NumberFormatUs = new Ax.text.NumberFormat("us");
    console.log("us:" + NumberFormatUs.format(1234.123, "###,###.00"));
    
    var NumberFormatEs = new Ax.text.NumberFormat("es");
    console.log("es:" + NumberFormatEs.format(1234.123, "###,###.00"));
    
    var NumberFormatFr = new Ax.text.NumberFormat("fr");
    console.log("fr:" + NumberFormatFr.format(1234.123, "###,###.00"));
</script>
001234.12
001234.13
001234.1280
Localized formatting
us:1,234.12
es:1.234,12
fr:1 234,12

2 Number Parse

parseFloat() and Number() JavaScript methods are powerfull String to number conversion functions, but it only allows parsing strings with numbers in native JS locale and result is always a native Float JS Number. Ax.text.Number class is able to parse strings as numbers in different locales and returns always a Decimal number avoiding number misstranslation and retaining number precision.

Copy
<script>
    var NumberFormatUs = new Ax.text.NumberFormat("us");
    console.log("us:" + NumberFormatUs.parse("1,234.123", "###,###.00"));
    console.log("us:" + NumberFormatUs.parse("1234.123",  "###,###.00"));
    
    var NumberFormatEs = new Ax.text.NumberFormat("es");
    console.log("es:" + NumberFormatEs.parse("1.234,123", "###,###.00"));
    console.log("es:" + NumberFormatEs.parse("1234,123",  "###,###.00"));
    
    var NumberFormatFr = new Ax.text.NumberFormat("fr");
    console.log("fr:" + NumberFormatFr.parse("1 234,123", "###,###.00"));
    // https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4510618
    // Frech separator is not space, it's non breaking space 0xA0
    console.log("fr:" + NumberFormatFr.parse("1" + String.fromCharCode(160) + "234,123", "###,###.00"));
    console.log("fr:" + NumberFormatFr.parse("1234,123",  "###,###.00"));
</script>
us:1234.123
us:1234.123
es:1234.123
es:1234.123
fr:1
fr:1234.123
fr:1234.123