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

223
Views
Eliminar los ceros finales del número si es un número entero

Así que estoy aprendiendo javascript, y no he estado trabajando con él por mucho tiempo, y tengo el siguiente código:

 function doslope() { var b, m; x1 = parseFloat(document.getElementById("x1").value); y1 = parseFloat(document.getElementById("y1").value); x2 = parseFloat(document.getElementById("x2").value); y2 = parseFloat(document.getElementById("y2").value); m = (y2 - y1) / (x2 - x1); b = y1 - m * x1; m = m.toFixed(2); b = b.toFixed(2); if (Number.isInteger(m)) { m = parseInt(m.toString()); } if (Number.isInteger(b)) { b = parseInt(b.toString()); } document.getElementById("result").innerHTML = "y=" + m + "x+" + b; }
 <label>x1<input id="x1" /></label><br> <label>y1<input id="y1" /></label><br> <label>x2<input id="x2" /></label><br> <label>y2<input id="y2" /></label><br> <button onclick="doslope()">Do slope</button><br> <br> <output id="result"></output>

Cuando ejecuto esto con los números x1=5 , y1=5 , x2=6 y y2=3 obtengo el resultado y=-2.00x+15.00 .

Me pregunto qué error estoy cometiendo aquí que no elimina el .00 al final del número.

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

0

El problema es que las sentencias if que tienes, te están devolviendo false, por lo que no estás haciendo el parseInt, si las sacas, funciona correctamente:

 function doslope() { var b, m; x1 = parseFloat(5); y1 = parseFloat(5); x2 = parseFloat(6); y2 = parseFloat(3); m = (y2 - y1) / (x2 - x1); b = y1 - m * x1; m = m.toFixed(2); b = b.toFixed(2); m = parseInt(m.toString()); b = parseInt(b.toString()); document.getElementById("result").innerHTML = "y=" + m + "x+" + b; }

¿Por qué estás usando esa declaración if?

Si quieres que el usuario solo pueda poner números, puedes intentar con algo como esto: type="number" solo permite poner números, y step="0.01" te permite poner números decimales

 <label>x1<input id="x1" type="number" step="0.01" /></label><br> <label>y1<input id="y1" type="number" step="0.01" /></label><br> <label>x2<input id="x2" type="number" step="0.01" /></label><br> <label>y2<input id="y2" type="number" step="0.01" /></label><br>
about 4 years ago · Juan Pablo Isaza Report

0

Number.isInteger() verifica el tipo de valor y dado que sus variables m y b son cadenas, siempre devolverá falso. Lo que podrías hacer es convertirlos temporalmente en flotantes:

 if (Number.isInteger(parseFloat(m))) { m = parseInt(m.toString()); }

Alternativamente (y en su caso, creo que sería una mejor opción) es simplemente eliminar .00 de la cadena en sí:

 m = m.toFixed(2).replace(/\.?0+$/, ''); b = b.toFixed(2).replace(/\.?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!