Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

158
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!