solo - redondear decimales php
¿Cómo convierto la salida de number_format a números en PHP? (7)
La mejor manera es usar las opciones en la función number_format en sí misma. El formato es number_format (float $ number, int $ decimals = 0, string $ dec_point = ''.'', String $ miles_sep = '','')
es decir, si no necesitas el '','' en la cuerda formateada, hazlo como
$ num = 23.33333
echo number_format ($ num, 2, ''.'', '''');
si necesita eso como flotante, encuadre lo mismo para flotar $ floatnum = (float) number_format ($ num, 2, ''.'', '''');
Espero que esto ayude
Gracias Shyam Senior PHP Developer TunerLabs
PHP no puede reconocer 1,200.00
(generado por number_format
) pero solo 1200.00
,
¿Cuál es la solución general para este problema?
Podría hacer $num = (float) str_replace('','', '''', $num);
Básicamente, simplemente deshazte de las comas, y luego ponlo como un tipo numérico (float o int).
Puede eliminar cualquier carácter que no sea un dígito o un punto decimal y analizarlo con floatval
:
$number = 1200.00;
$parsed = floatval(preg_replace(''/[^/d.]/'', '''', number_format($number)));
var_dump($number === $parsed); // bool(true)
Y si el número no tiene .
como punto decimal:
function parse_number($number, $dec_point=null) {
if (empty($dec_point)) {
$locale = localeconv();
$dec_point = $locale[''decimal_point''];
}
return floatval(str_replace($dec_point, ''.'', preg_replace(''/[^/d''.preg_quote($dec_point).'']/'', '''', $number)));
}
Puedes usar filter_var. p.ej
$num = ''1,200,998'';
$real_integer = filter_var($num, FILTER_SANITIZE_NUMBER_INT);
echo $real_integer;
dará salida:
1200998
Si está utilizando 5.3 o superior (gracias ircmaxell), use numfmt_parse .
Yo uso el siguiente código:
function remove_non_numerics($str)
{
$temp = trim($str);
$result = "";
$pattern = ''/[^0-9]*/'';
$result = preg_replace($pattern, '''', $temp);
return $result;
}
utilizar ; Desinfectar los filtros
$ number1 = ''$ 1,989.34'';
$number2 = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_FRACTION);//1989.34
$number2 = filter_var($number, FILTER_SANITIZE_NUMBER_FLOAT, FILTER_FLAG_ALLOW_THOUSAND);//1,98934