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