Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Divisiones en php

Estas en el tema de Divisiones en php en el foro de PHP en Foros del Web. Buenas a todos! En primer lugar me presento, soy Javi, un nuevo miembro de la comunidad que no sabe mucho sobre pHp pero con bastantes ...
  #1 (permalink)  
Antiguo 13/05/2013, 03:11
 
Fecha de Ingreso: mayo-2013
Ubicación: Algeciras
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Divisiones en php

Buenas a todos!

En primer lugar me presento, soy Javi, un nuevo miembro de la comunidad que no sabe mucho sobre pHp pero con bastantes ganas de aprender =D.

Os comento lo que me pasa:

A través de pHp, estoy leyendo un feed el cual se actualiza cada minuto y en el que aparece un número. El número en cuestión soy capaz de obtenerlo sin problemas y mostrarlo en una tabla, pero a la hora de trabajar con él, me da ciertos problemas.

Lo que trato de hacer es obtener el precio de un gramo de oro dependiendo de su quilate, pero las divisiones no me salen del todo bien (aún siendo algo sencillo xD).

Pongo el código que utilizo y comento lo que me pasa:


Cita:
<?php
Este es el feed del que obtengo el precio
$valor = simplexml_load_file('https://www.igolder.com/GoldData.ashx?type=Historical&hours=24&currency=EU R&tz=Romance%20Standard%20Time&unit=gr&output=xml' );

$precio = $valor->Price['Value']; Este es el valor que obtengo del feed (está correcto)

Ahora lo que hago es una sencilla regla de tres: si 999 milésimas de oro por gramo (24 quilates) son, por ejemplo, 35.50 euros (este valor está contenido en la variable $precio), 958 milésimas (que es el siguiente quilate más bajo) será x. Entonces multiplico el precio por 958 y lo divido entre 999 (esta división la hago más abajo, a la hora de mostrarlo en tabla)

$kt23 = ($precio*958); Preparo el valor de 23 quilates para sólo tener que dividir entre 999 más tarde
echo '<table border="1">';
echo '<tr>';
echo '<td>24</td>'; Estos son los quilates
echo '<td>999</td>';Milésimas de oro por gramo
echo '<td>'.$precio.'</td>'; Este es el precio que consigo mostrar correctamente
echo '</tr>';

echo '<tr>';
echo '<td>23</td>';
echo '<td>958</td>';
echo '<td>'.number_format($kt23/999, 2, '.', '').'</td>'; Aquí viene el problema, la división debería dar como resultado un 34,04, sin embargo está dando 33,56 además de que no varía cuando se actualiza el valor contenido en $precio
echo '</tr>';
echo '</table>';

?>
Lo he comprobado, y añadiendo yo el precio "a pelo", si obtengo el resultado correcto de la división, sin embargo, a la hora de trabajar con el precio que obtengo del feed, me da problemas y no divide correctamente.

A ver si alguno tenéis idea de qué ocurre.
  #2 (permalink)  
Antiguo 13/05/2013, 03:50
Avatar de bookmaster  
Fecha de Ingreso: febrero-2002
Ubicación: Toledo
Mensajes: 976
Antigüedad: 22 años, 2 meses
Puntos: 67
Respuesta: Divisiones en php

Cambia esta linea:
Código PHP:
$precio $valor->Price['Value']; Este es el valor que obtengo del feed (está correcto
por
Código PHP:
$precio = (float)$valor->Price['Value']; //Este es el valor que obtengo del feed (está correcto) 
Con esto le estas obligando a convertirlo en float, ya que sino los cálculos de un "literal" no los realiza correctamente.

Aquí te dejo la diferencia para que lo veas en marcha: http://pruebas.lohacemosweb.net/himanchu.php
__________________
Decir si te a funcionado la respuesta es ¡GRATIS!. Por favor indicarlo.
http://www.lohacemosweb.net
http://tutoriales.lohacemosweb.net
  #3 (permalink)  
Antiguo 13/05/2013, 03:58
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Divisiones en php

imprime el valor del feed antes de hacer cualquier cosa quiero ver que obtienes exactamente... recuerda que no es lo mismo tener 35.50 que 3550 en cuestiones de formato y hay que ver si te esta redondeando algo... o si te esta manejando los Valores por moneda...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #4 (permalink)  
Antiguo 13/05/2013, 04:16
 
Fecha de Ingreso: mayo-2013
Ubicación: Algeciras
Mensajes: 4
Antigüedad: 10 años, 11 meses
Puntos: 0
Respuesta: Divisiones en php

Cita:
Iniciado por bookmaster Ver Mensaje
Cambia esta linea:
Código PHP:
$precio $valor->Price['Value']; Este es el valor que obtengo del feed (está correcto
por
Código PHP:
$precio = (float)$valor->Price['Value']; //Este es el valor que obtengo del feed (está correcto) 
Con esto le estas obligando a convertirlo en float, ya que sino los cálculos de un "literal" no los realiza correctamente.

Aquí te dejo la diferencia para que lo veas en marcha: [url]http://pruebas.lohacemosweb.net/himanchu.php[/url]
Con lo que me has comentado ya funciona correctamente, no sabía que tenía que forzarlo a ser float. Te lo agradezco muchísimo, me has ayudado a resolver un problema que venía arrastrando 3 o 4 días ya =D. De nuevo, muchísimas gracias =)

Cita:
Iniciado por arcanisgk122 Ver Mensaje
imprime el valor del feed antes de hacer cualquier cosa quiero ver que obtienes exactamente... recuerda que no es lo mismo tener 35.50 que 3550 en cuestiones de formato y hay que ver si te esta redondeando algo... o si te esta manejando los Valores por moneda...
El problema es el que comentaba arriba bookmaster, tenía que trabajar con float. Igualmente el número lo obtenía con decimales, es decirm sacaba 35.50, no 3550 =P. Gracias por tu respuesta! me gusta esta comunidad D:

Etiquetas: tabla
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 20:34.