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

464
Views
Cómo convertir pies y pulgadas en cm y viceversa en Javascript
  1. El usuario elige la altura en pies. Por ejemplo, 6 pies 0 pulgadas
  2. El usuario presiona el botón Guardar. La altura se guarda en db como cm
  3. El usuario ahora ve la altura obtenida como cm desde db y convertida nuevamente a pies y pulgadas
  4. Debido al redondeo de Javascript, la altura de los usuarios no es la misma que sus pies y pulgadas elegidos
  5. ¿Cómo almacenar con precisión pies y pulgadas como cm y hacer que el valor sea el mismo que eligió el usuario?

Estamos usando Realm como base de datos local.

 const testConversion = (feet: number, inches: number) => { const cmTotal = feet * 30.48 + inches * 2.54; const feetNew = Math.floor(cmTotal / 30.48); // How to have inches match up? const inchesNew = (cmTotal % 30.48) * 0.393701; expect(feetNew).toEqual(feet); expect(inchesNew).toEqual(inches); }; // 12 inch in a feet // tallest man about is about 9 feet describe("Height conversion from metric to imperial", () => { it("Amount of stone and lb should stay the same", () => { testConversion(6, 0); for (let feet = 0; feet < 9; feet++) { for (let inches = 0; inches < 12; inches++) { testConversion(feet, inches); } } }); });

Resultado:

● No se pudo ejecutar el conjunto de pruebas

 expect(received).toEqual(expected) // deep equality Expected: 0 Received: 12.000006479999998 8 | 9 | expect(feetNew).toEqual(feet); > 10 | expect(inchesNew).toEqual(inches); | ^ 11 | };

Redondear pulgadas de diferentes maneras no parece ayudar, el resultado final siempre está mal de alguna manera. ¿Alguna idea de cómo hacer aparte de guardar pies y pulgadas en campos separados en db?

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

Los cálculos de punto flotante nunca son precisos ( ¿Están rotas las matemáticas de punto flotante? ). Y debido a eso, su cmTotal % 30.48 in (cmTotal % 30.48) * 0.393701; es problemático

Usted espera que: 182.88 % 30.48 da como resultado 0 pero, sin embargo, da como resultado 30.479999999999993 debido a las imprecisiones de la aritmética de coma flotante.

Lo que quiere hacer es que el resultado de newInch dependa del resultado que calculó para feetNew :

(cmTotal - feetNew * 30.48) * 0.393701;

Y en su prueba no debe expect(inchesNew).toEqual(inches); porque no puede esperar que los números de dicha conversión sean exactamente iguales. Siempre tendrás algún pequeño error. Así que probablemente quieras usar algo como toBeCloseTo en su lugar.

 let feet = 6 let inches = 0 const testConversion = (feet, inches) => { const cmTotal = feet * 30.48 + inches * 2.54; const feetNew = Math.floor(cmTotal / 30.48); // How to have inches match up? const inchesNew = (cmTotal - feetNew * 30.48) * 0.393701; console.log(feet, feetNew) console.log(inches, inchesNew) }; testConversion(6, 0)

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!