tutorial sirve que programacion para lenguaje descargar caracteristicas php

sirve - php tutorial



Redondea ABAJO al entero medio más cercano en PHP (5)

De los requisitos de mi trabajo. Puse una función para hacer esto. Espero que puedas verlo como referencia:

function round_half_five($no) { $no = strval($no); $no = explode(''.'', $no); $decimal = floatval(''0.''.substr($no[1],0,2)); // cut only 2 number if($decimal > 0) { if($decimal <= 0.5) { return floatval($no[0]) + 0.5; } elseif($decimal > 0.5 && $decimal <= 0.99) { return floatval($no[0]) + 1; } } else { return floatval($no); } }

Necesito una función de PHP que tome un flotador y la reduzca a la mitad más cercana (x.0 o x.5). Encontré otras funciones que redondearán a la fracción más cercana, pero giran en ambos sentidos.

La función que necesito solo puede redondear.

Ejemplos

7.778 -> 7.5

7.501 -> 7.5

7.49 -> 7.0

7.1 -> 7.0


Supongo que PHP tiene una función de piso: floor($num * 2) / 2 debería hacerlo.


Una solución fácil es utilizar el operador de módulo (función fmod() ), como esto:

function roundDown($number, $nearest){ return $number - fmod($number, $nearest); } var_dump(roundDown(7.778, 0.5)); var_dump(roundDown(7.501, 0.5)); var_dump(roundDown(7.49, 0.5)); var_dump(roundDown(7.1, 0.5));

Y el resultado:

La ventaja es que funciona con cualquier número más cercano (0.75, 22.5, 3.14 ...)

Puede usar el mismo operador para redondear:

function roundUp($number, $nearest){ return $number + ($nearest - fmod($number, $nearest)); } var_dump(roundUp(7.778, 0.5)); var_dump(roundUp(7.501, 0.5)); var_dump(roundUp(7.49, 0.5)); var_dump(roundUp(7.1, 0.5));


$x = floor($x * 2) / 2;


echo round($val*2) / 2; // Done