1

He probado con floor(), round(), truncat() y ceil() y no me funciona (me redondea, pero no quiero redondear, quiero quitar decimales innecesarios). Si una función me devuelve esto:

// 0.5000000000000002
// 94.99000000000001

Busco un método que me los convierta a esto:

0.5
94.99
gbianchi
  • 19,675
  • 11
  • 38
  • 58
Javier Cake
  • 1,483
  • 7
  • 21
  • 1
    de hecho dices que no quieres redondear, pero en tu segundo ejemplo si redondeas, pues pasas de 94.99 a 95 –  May 07 '19 at 12:04
  • @αλρθα Cierto, voy a actualizar el post! – Javier Cake May 07 '19 at 12:05
  • 1
    @JavierCake te actualice el 95.99 ;) – gbianchi May 07 '19 at 14:14
  • relacionado [¿Por qué mis programas no pueden hacer cálculos aritméticos correctamente?](https://es.stackoverflow.com/questions/197/por-qu%C3%A9-mis-programas-no-pueden-hacer-c%C3%A1lculos-aritm%C3%A9ticos-correctamente) – JackNavaRow May 07 '19 at 14:19

3 Answers3

4

Yo intentaría hacer un fix primero para quedarme solo con un decimal y después un replace con un regex para eliminar los 0 irrelevantes

(0.5000000000000002).toFixed(1).replace(/\.0+$/,'');

Aquí una versión algo mas compleja pero que cubre tus necesidades

(94.99000000000001).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1')

 console.log(
(0.5000000000000002).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1')
)
    console.log(
(94.99000000000001).toFixed(2).replace(/([0-9]+(\.[0-9]+[1-9])?)(\.?0+$)/,'$1')
)
Manuel Robles
  • 1,594
  • 1
  • 7
  • 17
3

Lo que necesitas es hacer un toFixed al número. Por ejemplo

console.log((94.99000000000001).toFixed())
console.log((0.5000000000000002).toFixed(1))

Puedes determinar el número de decimales que deseas aplicar pasando el método toFixed()

Manuel Robles
  • 1,594
  • 1
  • 7
  • 17
Aníbal Jorquera
  • 1,066
  • 4
  • 11
3

Creo que esto te servirá:

var num = 94.99000000000001
Math.round(num) //95

var num2 = 0.5000000000000002
parseFloat(num2.toFixed(1)) //0.5
  • 2
    Por favor, explica por qué y cómo funciona tu código para que sea de utilidad para otros desarrolladores menos experimentados – Julio May 07 '19 at 13:58