Posterior a consultar especialistas en este tema, programadores de varias áreas y maestros dimos con la solución a la cuestión y la compartimos en este post.
los toLocaleString()
el método devuelve un string con una representación sensible al idioma de este número.
Sintaxis
toLocaleString()toLocaleString(locales)toLocaleString(locales, options)
Parámetros
los locales
y options
Los argumentos personalizan el comportamiento de la función y permiten que las aplicaciones especifiquen el lenguaje cuyas convenciones de formato deben usarse. En implementaciones, que ignoran la locales
y options
argumentos, la configuración regional utilizada y la forma de la string devueltos dependen totalmente de la implementación.
Ver el Intl.NumberFormat()
constructor para obtener detalles sobre estos parámetros y cómo usarlos.
Valor devuelto
A string con una representación sensible al idioma del número dado.
Rendimiento
Al formatear un gran número de números, es mejor crear un Intl/NumberFormat
objeto y utilizar la función proporcionada por su Intl/NumberFormat/format
propiedad.
Ejemplos de
Utilizando toLocaleString
En uso básico sin especificar una configuración regional, un formato string en la configuración regional predeterminada y con las opciones predeterminadas se devuelve.
var number =3500; console.log(number.toLocaleString());// Displays "3,500" if in U.S. English locale
Comprobando soporte para locales
y options
argumentos
los locales
y options
Los argumentos aún no son compatibles con todos los navegadores. Para comprobar el soporte en ES5.1 y las implementaciones posteriores, el requisito de que las etiquetas de idioma ilegales se rechacen con un RangeError
se puede utilizar una excepción:
functiontoLocaleStringSupportsLocales()var number =0;try number.toLocaleString('i');catch(e)return e.name ==='RangeError';returnfalse;
Antes de ES5.1, no se requerían implementaciones para lanzar una excepción de error de rango si toLocaleString
se llama con argumentos.
Una verificación que funciona en todos los hosts, incluidos los que admiten ECMA-262 antes de la edición 5.1, es probar las características especificadas en ECMA-402 que se requieren para admitir opciones regionales para Number.prototype.toLocaleString
directamente:
functiontoLocaleStringSupportsOptions()return!!(typeof Intl =='object'&& Intl &&typeof Intl.NumberFormat =='function');
Esto prueba una global Intl
objeto, comprueba que no es null
y que tiene un NumberFormat
propiedad que es una función.
Utilizando locales
Este ejemplo muestra algunas de las variaciones en los formatos de números localizados. Para obtener el formato del idioma usado en la interfaz de usuario de su aplicación, asegúrese de especificar ese idioma (y posiblemente algunos idiomas de respaldo) usando el locales
argumento:
var number =123456.789;// German uses comma as decimal separator and period for thousands console.log(number.toLocaleString('de-DE'));// → 123.456,789// Arabic in most Arabic speaking countries uses Eastern Arabic digits console.log(number.toLocaleString('ar-EG'));// → ١٢٣٤٥٦٫٧٨٩// India uses thousands/lakh/crore separators console.log(number.toLocaleString('en-IN'));// → 1,23,456.789// the nu extension key requests a numbering system, e.g. Chinese decimal console.log(number.toLocaleString('zh-Hans-CN-u-nu-hanidec'));// → 一二三,四五六.七八九// when requesting a language that may not be supported, such as// Balinese, include a fallback language, in this case Indonesian console.log(number.toLocaleString(['ban','id']));// → 123.456,789
Utilizando options
Los resultados proporcionados por toLocaleString
se puede personalizar con el options
argumento:
var number =123456.789;// request a currency format console.log(number.toLocaleString('de-DE', style:'currency', currency:'EUR'));// → 123.456,79 €// the Japanese yen doesn't use a minor unit console.log(number.toLocaleString('ja-JP', style:'currency', currency:'JPY'))// → ¥123,457// limit to three significant digits console.log(number.toLocaleString('en-IN', maximumSignificantDigits:3));// → 1,23,000// Use the host default language with options for number formattingvar num =30000.65; console.log(num.toLocaleString(undefined,minimumFractionDigits:2, maximumFractionDigits:2));// → "30,000.65" where English is the default language, or// → "30.000,65" where German is the default language, or// → "30 000,65" where French is the default language
Especificaciones
Compatibilidad del navegador
Escritorio | Móvil | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Cromo | Borde | Firefox | explorador de Internet | Ópera | Safari | WebView Android | Chrome Android | Firefox para Android | Opera Android | Safari en IOS | Internet de Samsung | |
toLocaleString |
1 | 12 Antes de Edge 18, los números se redondean a 15 dígitos decimales. Por ejemplo, (1000000000000005).toLocaleString('en-US') devoluciones "1,000,000,000,000,010" . |
1 | 5 En Internet Explorer 11, los números se redondean a 15 dígitos decimales. Por ejemplo, (1000000000000005).toLocaleString('en-US') devoluciones "1,000,000,000,000,010" . |
4 | 1 | 1 | 18 | 4 | 10.1 | 1 | 1.0 |
locales |
24 | 12 | 29 | 11 | 15 | 10 | 4.4 | 26 | 56 | 14 | 10 | 1,5 |
options |
24 | 12 | 29 | 11 | 15 | 10 | 4.4 | 26 | 56 | 14 | 10 | 1,5 |
Ver también
Number.prototype.toString()
Puedes patrocinar nuestro ensayo poniendo un comentario o valorándolo te estamos eternamente agradecidos.