Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

167
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda