Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

159
Vistas
Matemáticas para combinar dos valores de matriz como notación para un gran número

Actualmente estoy tratando de escribir una parte de mi código que toma un número grande, digamos, 1e31, y lo convierte a 1no donde no es una medida de unidades. Actualmente tengo mi código configurado como tal:

 function getShortened(number) { if (number <= 0) return number; var num = Math.pow(10, Math.floor(Math.log10(number)) % 3) * (number / Math.pow(10, Math.floor(Math.log10(number)))); return num; } function getNotation(num) { let firstArray = ["", "un", "du", "tr", "qa", "qi", "sx", "sp", "oc", "no"]; let secondArray = ["", "Du", "Tr", "Qa", "Qi", "Sx", "Sp", "Oc", "No"]; let output = ""; console.log((Math.floor(Math.log10(num) / 3)) + " " + (Math.floor(Math.log10(num) / 3) % 11 - 1) + " " + (Math.floor(Math.floor(Math.log10(num) / 3) / 11))); output += firstArray[Math.floor(Math.log10(num) / 3) % 11 - 1]; output += secondArray[Math.floor(Math.floor(Math.log10(num) / 3) / 11)]; return output; } console.log(Math.round(getShortened(1e33)) + getNotation(1e33)); // should show 1Du console.log(Math.round(getShortened(1e36)) + getNotation(1e36)); // should show 1unDu console.log(Math.round(getShortened(1e30)) + getNotation(1e30)); // should show 1no

El problema con el que me encuentro es que el índice que uso para firstArray funciona bien hasta que llega a 9, luego salta a -1. Si alguien pudiera darme algo de ayuda, sería muy apreciado. Avísame si necesitas más del código.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Así que terminé resolviéndolo. El código original tomó un número grande y esencialmente determinó cuántos dígitos había en el número, luego lo dividiría por 3 para determinar el índice de una matriz a la que se haría referencia para el valor. Cuando intenté transferir eso de una matriz grande a dos matrices más pequeñas que eran más dinámicas y, en teoría, permitirían números más grandes que el límite en javascript (aunque ese es otro problema). Para hacer esto, necesitaría cambiar el índice de inicio a uno que recorra las dos matrices. El problema con el que me encontré fue que hay casos especiales para los índices 0-4, y el segmento de repetición de 10 números comenzó en el índice 11. Esencialmente, aunque tuve en cuenta el cambio de índice 1, lo hice después de ajustar el índice original y al hacerlo, trató de asignar índices que están fuera de la matriz. Para arreglar esto, fue sorprendentemente simple, solo tomo en cuenta el cambio primero y luego el ajuste funciona perfectamente.

 function getNotation(num){ let firstArray = ["", "un", "du", "tr", "qa", "qi", "sx", "sp", "oc", "no"]; let secondArray = ["", "De", "Tr", "Qa", "Qi", "Sx", "Sp", "Oc", "No"]; let output = ""; console.log((Math.floor(Math.log10(num) / 3)) + " " + (Math.floor(Math.log10(num) / 3) % 11 - 1) + " " + (Math.floor(Math.floor(Math.log10(num) / 3) / 11))); output += firstArray[(Math.floor(Math.log10(num) / 3) - 1) % 10]; output += secondArray[Math.floor(Math.floor(Math.log10(num) / 3) / 9)]; return output; }
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda