Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

680
Vistas
Modo de redondeo en el método Number () en Javascript

Estoy reescribiendo el código JavaScript a Java. Encontré esta línea en código JavaScript.

 Number("<amount-values>").toFixed(0)

Como el valor está relacionado con el dinero, estoy usando BigDecimal en Java para hacer cálculos precisos y no perder precisiones.

¿Podría ayudarme con el modo de redondeo correcto en BigDecimal que es equivalente al modo de redondeo del método Number() en JavaScript, donde ambos redondeos producirán el mismo resultado?

 BigDecimal.setScale(0)

Ambas escalas están produciendo resultados diferentes cuando hay decimales. Creé una tabla muy pequeña y veo que el método Number() se está alineando con HALF_DOWN, HALF_EVEN, HALF_UP. Pero este es un ejemplo muy pequeño y podría haber muchos otros casos.

ingrese la descripción de la imagen aquí

Sí, no quiero nada después del punto decimal en mi salida.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Para que quede claro, Number.prototype.toFixed() no es equivalente a Math.Round

 (5.5).toFixed(0) == 6 (5.4).toFixed(0) == 5 (-5.5).toFixed(0) === **-6** Math.round(5.5) == 6 Math.round(5.4) == 5 Math.round(-5.5) == **-5**

Debe saber esto y decidir qué comportamiento desea, si hay valores negativos involucrados.

Si todos sus valores son positivos, la lógica es bastante simple: si el decimal es mayor o igual a .5, entonces redondea hacia arriba (Math.ceil), de lo contrario, redondea hacia abajo (Math.floor). Creo que "Math.ceil" y "Math.floor" son los nombres de los métodos tanto en JS como en Java.

Dado que tiene decimales en su ejemplo, debe tener claro si realmente desea el comportamiento mostrado por (-5.5).toFixed(0) vs Math.round(-5.5).

Parece que toFixed efectivamente lleva las cosas a ambos lados de 0 hacia 0. Math.round, por otro lado, parece redondear los valores hacia abajo, a valores más bajos (ya sea menos positivos o más negativos).

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda