Cuando trato de agregar un número entero a un número de 3 dígitos formado con la función php number_format (), da el resultado correcto, pero cuando el número se convierte en 4 dígitos, da un resultado incorrecto.
He probado esto. por favor explícame la razón detrás de esto??
$num1=number_format(1000.5,2); $num1+=1; echo $num1;Salida: 2
Pero
$num1=number_format(100.5,2); $num1+=1; echo $num1."\n";`Salida: 101.5
number_format() devuelve una cadena, no un número. Está ahí para formatear un tipo numérico (entero, flotante) en una cadena con un "diseño" específico y deseado. Entonces, lo que debe hacer es agregar el número 1 a la cadena resultante de number_format , que intentará volver a convertir la cadena en un número, aparentemente dando como resultado 1 para la conversión de cadena también, lo que le da 2 en total.
tl;dr; Haga cálculos solo con números y luego haga number_format al final para generar un formato definido.
$num1 = number_format(1000.5, 2); var_dump($num1); // => string(8) "1,000.50" $num1 += 1; var_dump($num1); // => int(2)La función number_format() devuelve una cadena.
Y esa cadena se convierte en entero cuando agrega 1
Ver Tipo Malabares
La solución más rápida sería usar str_replace() en su número formateado. Algo como esto haría:
(float)str_replace( ',', '', $formatted_number )Al eliminar las comas de la cadena y solicitar el valor flotante, obtendrá un número utilizable.