Necesito mostrar un valor de moneda en el formato de 1K igual a mil, o 1.1K, 1.2K, 1.9K, etc., si no es incluso miles, de lo contrario si es inferior a mil, mostrar 500, 100, 250, etc. normal , usando javascript para formatear el número?
javascript
jquery
formatting
numbers
Carl Weis
fuente
fuente
M
yG
?Respuestas:
Parece que esto debería funcionar para usted:
fuente
$mynumber_output
dónde inserto esto para usarlo? Por ejemplo, digamos$mynumber_output
= 12846, me gustaría convertir 12846 a12.8k
Una versión más generalizada:
fuente
if (num >= si[i].value)
conif (Math.abs(num) >= si[i].value)
.replace(rx, "$1")
hacer?1.0
convierte1
y se1.10
convierte1.1
Aquí hay una solución simple que evita todas las
if
declaraciones (con el poder deMath
).Bonus Meme
¿Qué significa
SI
?fuente
Math.abs
para añadir soporte para números negativos, al igual que:var tier = Math.log10(Math.abs(number)) / 3 | 0;
.Mejorando aún más la respuesta de Salman porque devuelve nFormatter (33000) como 33.0K
ahora nFormatter (33000) = 33K
fuente
Thx @Cos para comentar, eliminé la dependencia Math.round10.
fuente
Math.abs(num) >= decimal
.Muchas respuestas en este hilo se vuelven bastante complicadas, usando objetos matemáticos, objetos de mapas, bucles for, regex, etc. Pero estos enfoques realmente no mejoran la legibilidad del código o el rendimiento. Un enfoque directo parece ofrecer el mejor diseño.
Formateo del valor en efectivo con K
Formateo del valor en efectivo con KMBT
Usando números negativos
fuente
'-' + formatCash(-1 * number)
Dale crédito a Waylon Flinn si te gusta esto
Esto se mejoró de su enfoque más elegante para manejar números negativos y el caso ".0".
Cuantos menos bucles y "if" tenga, mejor OMI.
jsFiddle con casos de prueba -> https://jsfiddle.net/xyug4nvz/7/
fuente
abbreviateNumber(999999) == '1000k'
lugar de'1M'
. Esto se debe a quetoFixed()
también redondea los números. Sin embargo, no estoy seguro de cómo solucionarlo: /toFixed()
redondea el número de todos modos, también puede redondear el número antes de enviarloabbreviateNumber()
, para que regrese en1M
lugar de1000k
. No es una solución, sino una solución alternativa.const floored = Math.floor(scaled * 10) / 10;
ES2020 agrega soporte para esto al
Intl.NumberFormat
usar la notación de la siguiente manera:NumberFormat
especificaciones:Tenga en cuenta que, por el momento, no todos los navegadores son compatibles con ES2020, por lo que puede necesitar este Polyfill: https://formatjs.io/docs/polyfills/intl-numberformat
fuente
notation
y,compactDisplay
pero FireFox 77 y Safari 13.1 aún no lo admiten, por lo que es probable que necesites el polyfill.Esto es bastante elegante.
fuente
Puede usar el paquete de formato d3 modelado después de Python Advanced String Formatting PEP3101 :
fuente
Mejorando aún más la respuesta de @ Yash con soporte de números negativos:
fuente
Esta publicación es bastante antigua, pero de alguna manera llegué a esta publicación buscando algo. SO para agregar mi entrada Numeral js es la solución única ahora en días. Ofrece una gran cantidad de métodos para ayudar a formatear los números
http://numeraljs.com/
fuente
Método corto y genérico.
Puede hacer que el
COUNT_FORMATS
objeto de configuración sea tan largo o corto como desee, dependiendo del rango de valores que esté probando.fuente
Agregando en la respuesta superior, esto dará 1k por 1000 en lugar de 1.0k
fuente
Una versión modificada de la respuesta de Waylon Flinn con soporte para exponentes negativos:
Rendimiento esperado:
fuente
!Number.isFinite
' K M G T P E Z Y'
a' K M'
si desea que la unidad máxima seaM
El siguiente código es 1K = 1024, si desea 1K = 1000, cambie todos los 1024 a 1000.
fuente
Mejorando aún más la respuesta de @ tfmontague para formatear lugares decimales. 33.0k a 33k
fuente
No estoy satisfecho con ninguna de las soluciones publicadas, así que aquí está mi versión:
Admite un parámetro de precisión
fuente
Se me ocurrió uno muy codificado, ¡y es muy corto!
fuente
Mejorando aún más la respuesta de Salman debido a casos como nFormatter (999999,1) que devuelve 1000K.
fuente
La forma más simple y fácil de hacer esto es
Esto funciona para cualquier número. Incluyendo
L
Cr
etc.fuente
Al eliminar el bucle en la solución @ martin-sznapka, reducirá el tiempo de ejecución en un 40%.
Prueba de velocidad (200000 muestras aleatorias) para una solución diferente de este hilo
fuente
fuente
Esta función podría transformar grandes números (tanto positivos como negativos) en un formato amigable para el lector sin perder su precisión:
fuente
Estoy usando esta función. Funciona para ambos
php
yjavascript
.fuente
Decidí ampliar mucho la respuesta de @ Novellizator aquí para satisfacer mis necesidades. Quería una función flexible para manejar la mayoría de mis necesidades de formato sin bibliotecas externas.
Caracteristicas
Ejemplos
Función
fuente
Wow, hay tantas respuestas aquí. Pensé en darte cómo lo resolví, ya que parecía ser el más fácil de leer, maneja números negativos y se aleja mucho en el rango de kilo de JavaScript. También sería fácil cambiar a lo que desea o ampliar aún más.
fuente
Una alternativa más corta:
fuente