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

139
Vistas
¿Existe una función específica que me permita redondear a un número decimal específico en PHP?

Tengo un número que debe redondearse a un decimal específico, ¿hay alguna función en PHP para hacer eso?

Necesito que cada número (que refleja una cantidad de dinero) tenga un número decimal específico. Por ejemplo:

El decimal debe ser 25 , por lo que si obtuve $ 25,50 , necesito que sea $ 26,25 , y si obtuve $ 25,10 , debe ser $ 25,25 .

Revisé PHP round() , y específicamente ceil() , y encontré esta respuesta en Python , pero no estoy seguro de que se aplique a mi caso, porque lo que necesito es diferente.

¿Algunas ideas? Incluso el pseudocódigo como consejo sobre por dónde empezar me ayudará. ¡Gracias!

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Creo que necesitas una función personalizada, algo como esto:

 function my_round($number, $decimal = 0.25) { $result = floor($number) + $decimal; if ($result < $number) $result = ceil($number) + $decimal; return $result; } print my_round(25.50);
over 4 years ago · Santiago Trujillo Denunciar

0

Modifiqué esta respuesta para tu caso:

 <?php function roundUp($number){ $int = floor($number); $float = $number-$int; if ($float*10 < 2.5) $result = $int; else $result = ceil($number); $result+= 0.25; echo $number." becomes ".$result."\n"; } roundUp(25.50); roundUp(25.10);

Busque demostración aquí

over 4 years ago · Santiago Trujillo Denunciar

0

Siguiendo el consejo de axiac mencionado en los comentarios y siguiendo this thread , la mejor manera de lidiar con los números de punto flotante en el contexto de las monedas es tratar los valores de dólares y centavos como 2 entidades separadas.

Una forma en que puedo pensar en dividir los números antes y después del decimal en 2 variables separadas y procesar en consecuencia.

 <?php function customRound($amount){ $amount = strval($amount); if(preg_match('/(\d+)\.?(\d{1,2})?/', $amount, $matches) !== 1){ throw new \Exception("Invalid amount."); } $dollars = intval($matches[1]); $cents = intval($matches[2] ?? 0); if($cents < 10) $cents *= 10; if($cents <= 25) return $dollars . ".25"; return ($dollars + 1) . ".25"; } $tests = [25.51,25.49,26.25,25.10,25.49]; foreach ($tests as $test){ echo $test," => ",customRound($test),PHP_EOL; }
over 4 years ago · Santiago Trujillo 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