SoloCodigo

Programación Web y Scripting => PHP => Mensaje iniciado por: PsychoPain en Jueves 9 de Febrero de 2006, 18:18

Título: Loco Con Los Cálculos
Publicado por: PsychoPain en Jueves 9 de Febrero de 2006, 18:18
Hola,

estoy que me tiro de los pelos con los cálculos de números decimales en php, pues no dan la cantidad exacta, y sinceramente no se como hacerlo.

El caso es el siguiente; Tengo una cantidad (decimal) a la que quiero restarle un porcentaje de la misma.  La forma en la que lo estoy haciendo es esta:
Código: Text
  1.  
  2. <?php
  3.  
  4. $cantidad = 16050.00;
  5.  
  6. print $cantidad - $cantidad * 7 / 100;
  7.  
  8. ?>
  9.  
  10.  
El resultado es siempre 14926,5  , cuando debería ser 15000.00

Necesito ayuda!  :argh:

Gracias.
Título: Re: Loco Con Los Cálculos
Publicado por: ibito en Jueves 9 de Febrero de 2006, 18:27
¿No sería mas facil si hicieras los cálculos como se hacen comúnmente?
es decir:
Código: Text
  1.  
  2. echo $cantidad/1.07;
  3.  
  4.  

creo que esa manera de sacar el porcentaje que usas, está mal  :)
Título: Re: Loco Con Los Cálculos
Publicado por: PsychoPain en Jueves 9 de Febrero de 2006, 18:32
Muchas gracias ibito! funciona perfectamente.

Es lo que tiene ser novato :-D

 te debo una! :beer:
Título: Re: Loco Con Los Cálculos
Publicado por: gnfrs en Viernes 10 de Febrero de 2006, 17:26
MATEMATICAS......

A ver a ver:

$cantidad = 16050

El 7 % de cantidad es $cantidad * 7 / 100, o bien $cantidad * 0.07 que es igual a 1123,5 entonces 16050 - 1123,5 = 14926,5

Si hacemos el mismo cálculo con $cantidad = 100 es más claro.

De esa forma se resta un porcentaje de una cantidad. Ahora $cantidad / 1.07 no es lo mismo.

$cantidad / 1.07 = $cantidad / (1 + 7 / 100) = $cantidad + ($cantidad * 100 / 7)

Lo que querés calcular es $cantidad * 0.93 que eso es restar el porcentaje real.

16050 * 0.93 = 14926.5

No es lo mismo restar un porcentaje que calcular un porcentaje hacia atrás.
Título: Re: Loco Con Los Cálculos
Publicado por: ibito en Viernes 10 de Febrero de 2006, 17:43
Bien, creo que gnfrs tiene razón, y para que quede todo claro, hagamos una sencilla regla de 3

Código: Text
  1.  
  2. SI 16050 es el 100%
  3.         X          7%
  4.  
  5. X=(7*16050)/100 (Que es lo mismo que puso gnfrs)
  6. X=1123.5
  7.  
  8.  

Eso nos dice, que indudablemente, para sacar un porcentaje de cierta cantidad, es multiplicar la cantidad por el porcentaje que queremos y dividirlo entre 100, (cosa que se ha estado haciendo desde el principio de éste hilo).

El chiste es que es redondeo, con los porcentajes se manejan números quebrados, entonces, al dividir entre 1.07 no estas restando en realidad 7% es solo una aproximación que quizá si pueda ser válida para porcentajes mayores al 15% y no creo que siempre.

Yo dí la anterior sugerencia puesto que recuerdo que en una empresa en la que laboré, sacaban el porcentaje de ésa manera... cantidad/0.15, y creo que en todas partes se hace así... ahora entiendo porqué el gobierno tiene dinero de más... pero eso es otro cantar... jeje... bueno... espero haber resolvido las dudas que yo si me la resolví jeje.
Título: Re: Loco Con Los Cálculos
Publicado por: gnfrs en Lunes 13 de Febrero de 2006, 14:32
Citar
ahora entiendo porqué el gobierno tiene dinero de más...

JAJAJAJAJ....

Buena moraleja.... Por lo menos acá en Argentina, supongo, eso lo deben hacer muchos contadores...

En verdad eso no es una aproximación, no recuerdo muy bien para qué sirve, pero yo había hecho un sistema para un supermercado que utilizaba ambas técnicas (a pedido del dueño), que por cierto servían para calcular distintos porcentajes. Si hago memoria lo explico otro día, sería bueno que seamos un poco menos ignorantes y nos fijemos qué diferencia hay entre esos cáculos, supongo que debe ser importante saberlo...

Saludos.
Título: Re: Loco Con Los Cálculos
Publicado por: Amilius en Lunes 13 de Febrero de 2006, 20:33
Supongo que al usar "cantidad/1.07"  quieren obtener la funcion inversa de "cantidad*1.07" asi que con esto ultimo aumentas un 7% y con lo anterior vuelves a la cantidad inicial.

Por ejemplo si subes el precio de determinado item en 5% y luego quieres regresar al precio original tienes que usar "cantidad/1.05" (restar el 5% de la cantidad INICIAL) o de lo contrario vas a tener pérdidas si usas "cantidad*0.95%" (restar el 5% de la cantidad ACTUAL).  :rolleyes:
Título: Re: Loco Con Los Cálculos
Publicado por: ibito en Lunes 13 de Febrero de 2006, 23:13
Citar
Por ejemplo si subes el precio de determinado item en 5% y luego quieres regresar al precio original tienes que usar "cantidad/1.05" (restar el 5% de la cantidad INICIAL) o de lo contrario vas a tener pérdidas si usas "cantidad*0.95%" (restar el 5% de la cantidad ACTUAL).  :rolleyes:

100/1.05 no es igual al 5%
porque
Código: Text
  1.  
  2. 100/1.05=95.238095238095238095238095238095
  3.  
  4.  
el 5% de 100 es 5
y 100*0.95 si es 95%

No se, creo que esto ha ido demasiado lejos pero no se porqué se me hace interesante  :comp:
Título: Re: Loco Con Los Cálculos
Publicado por: Altareum en Miércoles 15 de Febrero de 2006, 16:29
Bueno.. a ver si puedo aclarar algunas cosas....


Para calcular el porcentaje de algo se puede hacer, se calcula por regla de 3, por ejemplo, para sacar el 5% de 100 se hace :

100% _______ 100
   5% _______ x = 5 * 100 / 100

Si acomodamos un poco la operación, se puede ver que:

x = 100 * (5/100)

De lo cual se deduce que:

x = 100 * 0.05

Por lo cual, lo que decían más arriba está bien, la confusión la generar al hacer:

x = 100 * 1.05

En realidad está operación se hace para obtener el valor que tenemos, Más su 5%, ya que sale de la siguiente operación:

x = 100 + 100 * 0.5
x = 100 * (1+0.5)
x = 100 * 1.05
x = 105


Y acá está lo confusión de PsychoPain, ya que el quiere restarle el 7% a su total, no sumárselo. Para ello la operación sería:

x = 100 - 100 * 0.7
x = 100 * (1-0.7)
x = 100 * 9.3



Altareum.
Título: Re: Loco Con Los Cálculos
Publicado por: Amilius en Miércoles 15 de Febrero de 2006, 16:42
Cita de: "ibito"
Citar
Por ejemplo si subes el precio de determinado item en 5% y luego quieres regresar al precio original tienes que usar "cantidad/1.05" (restar el 5% de la cantidad INICIAL) o de lo contrario vas a tener pérdidas si usas "cantidad*0.95%" (restar el 5% de la cantidad ACTUAL).  :rolleyes:

100/1.05 no es igual al 5%
porque
Código: Text
  1.  
  2. 100/1.05=95.238095238095238095238095238095
  3.  
  4.  
el 5% de 100 es 5
y 100*0.95 si es 95%

No se, creo que esto ha ido demasiado lejos pero no se porqué se me hace interesante  :comp:
Se trata de restar el 5% de la cantidad inicial.

Lo que estas haciendo es restar el 5% de la cantidad actual.

Inicial: 100
+5% = 100*1.05 = 105
ahora volvemos al precio INICIAL:
= 105/1.05 = 100

Si haces esto: 105 * 0.95 = 99.75 vas a tener que poner de tu bolsillo el 0.25 de pérdida.  :rolleyes:  :D
Título: Re: Loco Con Los Cálculos
Publicado por: gnfrs en Miércoles 15 de Febrero de 2006, 17:02
Tienen razón Altareum y Amilius.

NO ES LO MISMO RESTAR UN PORCENTAJE QUE CALCULAR UN PORCENTAJE HACIA ATRAS.

105 / 1.05 = CALCULA EL PORCENTAJE HACIA ATRAS
105 * 0.95 = RESTA EL 5% DE 105 que era la pregunta inicial del foro (105 - 105*5/100).

Saludos.