Issuu on Google+

24

Capítulo 5 Manejo de números

5 Manejo de números 5.1 Manejo de números En este capítulo se tratará el manejo básico de números: operaciones matemáticas con números enteros y de punto flotante; formateo de números; manipulación de números mediante funciones preexistentes y generación de números aleatorios. A continuación se verán dos programas. El primero es un programa html en el que se presenta una forma al usuario para que proporcione varios datos numéricos y los envíe para su proceso. El segundo es un programa en php, que recibe los datos, los manipula y presenta los resultados. El siguiente programa solicita precio de un producto. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Solicita el costo de un producto</title> </head> <body> Llene esta forma para calcular el costo total: <br /> <form action="maneja_calc10.php" method="post"> Precio: <input type="text" name="precio" size="5" /> <br /> Cantidad: <input type="text" name="cantidad" size="5" /> <br /> Descuento: <input type="text" name="descuento" size="5" /> <br /> Impuesto: <input type="text" name="impuesto" size="3" /> <br /> Modo de envío: <select name="envio"> <option value="5.00">Envio normal</option> <option value="8.95">Envio rápido.</option> <option value="19.36">Envío urgente</option>

Programación

Arturo Ruvalcaba


25

Capítulo 5 Manejo de números

</select> <br /> Número de pagos: <input type="text" name="pagos" size="3" /> <br /> <input type="submit" name="submit" value="Calcular!" /> </form> <!-- Script 4.1 - calculator.html --> </body> </html>

El siguiente programa calcula el costo del producto. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <title>Costo del producto</title> </head> <body> <?php // Script 4.2 - maneja_calc.php /* Este programa toma los valores de programa calculador.html y realiza el cálculo del costo total y pagos mensuales. */ // Despliega errores si los hay. ini_set ('display_errors', 1); error_reporting (E_ALL & ~E_NOTICE); // En caso de que este desabilitado register_globals. $precio = $_POST['precio']; $cantidad = $_POST['cantidad']; $descuento = $_POST['descuento']; $impuesto = $_POST['impuesto']; $envio = $_POST['envio']; $pagos = $_POST['pagos']; // Calcula el total. $total = $precio * $cantidad; $total = $total + $envio; $total = $total - $descuento; // Determina el porciento de impuesto. $taza_imp = $impuesto/100; $taza_imp = $taza_imp + 1; // Se agrega el impuesto. $total = $total * $taza_imp; // Calcula la mensualidad de pagos. $mensualidad = $total / $pagos; // Imprime los resultados. print "Usted ha seleccionado comprar:<br /> <b>$cantidad</b> baratija(s) a un precio de<br /> $<b>$precio</b> con un costo de <br /> $<b>$envio</b> por gastos de envío y un <br /> <b>$impuesto</b> porciento de impuesto.<br /> Después de su descuento de $<b>$descuento</b> el costo total es de

Programación

Arturo Ruvalcaba


26

Capítulo 5 Manejo de números

$<b>$total</b>.<br /> Dividido entre <b>$pagos</b> pagos mensuales, serían de $<b>$mensualidad</b> cada uno."; ?> </body> </html>

Al ejecutar el primer programa le aparece la siguiente forma al usuario y teclea los datos mostrados:

El segundo programa recibe los datos, realiza los cálculos y los envía al usuario:

Usted ha seleccionado comprar: 30 baratija(s) a un precio de $300.99 con un costo de $19.36 por gastos de envío y un 12 porciento de impuesto. Después de su descuento de $500.50 el costo total es de $9574.3872. Dividido entre 12 pagos mensuales, serían de $797.8656 cada uno. Se puede observar que los datos presentados al usuario no están formateados. Por ejemplo en las cantidades de pesos hay más de 2 decimales y los miles no están separados por comas.

5.2 Formateo de datos Para incluir en la cantidad mostrada el signo de pesos se puede hacer de dos formas: • •

Poner un espacio entre el signo de pesos y la variable o una etiqueta de HTML. Usar un carácter de escape y el signo de pesos, ejemplo: print “\$$precio”; no se puede utilizar $$variable porque la combinación de dos signo de pesos crea otro tipo de variable.

Programación

Arturo Ruvalcaba


Capítulo 5 Manejo de números

27

Existen funciones para el redondeo de cantidades: round ( ), number_format ( ) y sprintf( ). La función round ( ) acepta dos argumentos. El primero es el número a ser redondeado y puede ser un número o una variable. El segundo argumento es opcional e indica el número de decimales que deja después del redondeo. round (12.45); // 12 round (21.328, 2); // 21.33 $var = 632.83896; round ($var, 2); // 623.84 La función number_format ( ) trabaja en forma similar a round ( ) pero además tiene dos argumentos opcionales para especificar los caracteres que separan los miles y los decimales, la coma y el punto son los caracteres por default. number_format (526.946, 2); // 526.95 number_format (526, 2); // 526.00 $var = 247853619.54; number_format ($var); // 247,853,619.54 Las siguientes líneas se pueden agregar al programa que realiza los cálculos, justo antes de desplegarlos para tener sólo dos decimales en las cifras: $total = number_format ($total, 2); $mensualidad = number_format ($mensualidad, 2);

La función sprintf( ) permite definir un formato para desplegar los datos. Esta función es muy similar a la función pritnf( ) del lenguaje C. En el siguiente ejemplo se muestra como despliega la función print( ) el resultado de la división entre dos números cuando ésta no es exacta: print(5/3); // 1.6666666666667 En la función sprintf( ) se indica la plantilla o formato en que se desea desplegar el dato. Los formatos más comunes son los siguientes: %s string %d número decimal %x número hexadecimal %o número octal %f

número flotante

El formato se combina con números para indicar el número de dígitos a desplegar, por ejemplo con el formato %1.2f, se está indicando desplegar un entero y dos decimales. Al aplicar sprintf( ) con este formato para desplegar la división 5/3 se obtendría:

Programación

Arturo Ruvalcaba


Capítulo 5 Manejo de números

28

echo sprintf(“%1.2f”, (5/3)); // 1.67 Si se desea que la cadena desplegada tenga una longitud determinada, se puede agregar el carácter a usar para rellenar agregando una comilla simple como prefijo. Ejemplos: echo sprintf("%05d", 7); / / 00007 echo sprintf("$%2.2f", 34.99); / / $34.99 echo sprintf("%’$2.2f", 40.999); / / $41.00 echo sprintf("%'*6d", 76); // ****76

5.3 Generación de números aleatorios La función rand ( ) se utiliza para generar números aleatorios, tiene dos argumentos opcionales para especificar el rango de los números que se generen, incluyendo esos límites. $var = rand ( ); // 10944 $var = rand ( ); // 25593 $var = rand (100, 10000); // 2516 $var = rand (1, 1000); // 763 La función getrandmax( ) regresa el número aleatorio más grande posible que se puede crear usando la función rand( ), el valor depende del sistema operativo en la computadora. Otra función para generar números aleatorios es mt_rand( ). Funciona similar (supuestamente mejor) que rand( ) y es la mejor elección para situaciones más delicadas como la criptografía.

5.4 Otras funciones matemáticas PHP tiene otras funciones para manipular datos matemáticos. La función ceil( ) redondea el número dado al entero más alto: $var = ceil(526.346); // 527 La función floor( ) redondea el número dado al entero más bajo: $var = floor(526.346); // 526 La función abs( ) regresa el valor absoluto del número dado: $var = abs(-235); // 235 Además de estas funciones, PHP soporta todas las funciones trigonométricas, exponenciales, logarítmicas y de conversión de base.

Programación

Arturo Ruvalcaba


5. Manejo de numeros.