Foros del Web » Programando para Internet » PHP »

Manejo de Exponentes

Estas en el tema de Manejo de Exponentes en el foro de PHP en Foros del Web. Hola a todos, primero que nada quiero agradecer a quienes me ayuden a intentar resolver esta situación, honestamente estoy atorada con ello. Tengo un problema ...
  #1 (permalink)  
Antiguo 01/07/2013, 15:44
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 0
Pregunta Manejo de Exponentes

Hola a todos, primero que nada quiero agradecer a quienes me ayuden a intentar resolver esta situación, honestamente estoy atorada con ello.

Tengo un problema en una función, debo utilizar una formula financiera en PHP para el cálculo de un préstamo para comprar un auto.

La fórmula es la siguiente:

B_n = A(1+i)^n − (P/i)[(1+i)^n − 1]

Ejemplo 1:

Tienes un Prestamo por $18,000 con un de interes 14.25% x 36 meses.

Has realizado tu pago mensual número 24 por$617.39 y queremos calcular cuanto debemos actualmente.

Solución: 14.25% es el interés anual, por lo que 1.1875% es por mes, asi pues
i = 0.011875. Sustituyendo P = 617.39, A = 18000, n = 24 en la ecuación para obtener el balance.

B_n = A(1+i)^n − (P/i)[(1+i)^n − 1]

B_n = 18000*1.011875^24 − (617.39/0.011875)(1.011875^24−1)

B_n = 6866.97

En PHP Tengo algo de esta forma:


$MontInt = $apr/1200; // donde $apr es el % de interés anual, entre 12 (numero de meses por 100)


$a = pow($amountFinanced*(1+$MontInt),$term); // Amount Financed es el monto financiado, o monto total del préstamo, Term, es el número de meses pactados para el pago

$b = ($monthPayment/$MontInt )*(pow((1+$MontInt),$term)-1); // month Payment es el pago mensual.

$p = round($a - $b,2) ;

return $p;


El problema es que estoy recibiendo como resultado valores tipo INF, o bien exponentes muy altos:

3.26548643636E+139

Necesito saber, cómo puedo hacer para interpretar correctamente éste tipo de valores para imprimir en pantalla a manera de reporte.

Espero puedan ayudarme.

gracias
  #2 (permalink)  
Antiguo 01/07/2013, 18:41
 
Fecha de Ingreso: enero-2011
Mensajes: 7
Antigüedad: 13 años, 3 meses
Puntos: 0
Respuesta: Manejo de Exponentes

intenta cambiando tu $p = round($a - $b,2) ;

por


$p = round(($a - $b),2) ;
  #3 (permalink)  
Antiguo 01/07/2013, 18:54
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Manejo de Exponentes

Gracias por la respuesta, ya intenté con round, con float, con string, y nada.

Entiendo que son cantidades muy grandes, por que es elevar x número a potencias muy altas, pero necesito resolverlo.
  #4 (permalink)  
Antiguo 01/07/2013, 19:04
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Manejo de Exponentes

Al interprete se le complica y es necesario lo ayudes diciendole que el tipo de dato es "float", asi se soluciona el problema.

[PHP]<?php

// 6866.9680240726
$B_n = 18000 * pow(1.011875,24) - (617.39/0.011875) * (pow (1.011875,24)-1);

// redondeo a 2 decimales
echo round((float) $B_n,2);
__________________
Salu2!
  #5 (permalink)  
Antiguo 01/07/2013, 20:22
 
Fecha de Ingreso: julio-2013
Mensajes: 3
Antigüedad: 10 años, 9 meses
Puntos: 0
Respuesta: Manejo de Exponentes

Gracias por responderme, opté por manejarlo de una manera diferente.

Ya que aun con lo que me comentaste, me seguía generando resultados con notación científica, y es debido a que son exponentes muy altos, estamos hablando de 36,60,72 meses, por Miles de pesos del préstamo.

Voy a mandar a validar el sistema, si ya es autorizado daré por solucionado el tema, si no, seguiré molestándolos! =)!!

Gracias de cualquier forma!! :)!!
  #6 (permalink)  
Antiguo 01/07/2013, 20:43
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: Manejo de Exponentes

Podrias quitarle varios ceros a esos "miles" de pesos y luego hacer las cuentas... al final sabes que estaba expresado en "miles"

Si PHP no te resulta puedes hacer una libreria en C / C++ y llamarla desde PHP
__________________
Salu2!

Etiquetas: manejo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:59.