Foros del Web » Programando para Internet » PHP »

Sumar decimales en php

Estas en el tema de Sumar decimales en php en el foro de PHP en Foros del Web. Buenas!!!! ¿alguien puede echarm una mano? Se trata de algo tan simple como sumar decimales pero no obtengo los resultados que debería y no encuentro ...
  #1 (permalink)  
Antiguo 19/12/2011, 10:03
 
Fecha de Ingreso: octubre-2011
Ubicación: Las Palmas de Gran Canaria
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Sumar decimales en php

Buenas!!!! ¿alguien puede echarm una mano? Se trata de algo tan simple como sumar decimales pero no obtengo los resultados que debería y no encuentro la solución posible. Tengo estos parámetros que tomo de un txt :

$a = 2.0000e-006
$b = 5.8000e-007
$c = 8.2000e-006
$d = 8.0000e-007

y realizo lo siguiente:

Fichero = fopen("parametros.txt","r");
$i = 0;
while(!feof($Fichero)){
$linea= fgets($Fichero);
echo " Parámetro de la tecnología <br/>";
echo($linea);
$par = explode('=',$linea);
$valores[$i] = (double)$par;
$i++;

$a = $valores[0];
$b = $valores[1];
$c= $valores[2];
$d = $valores[3];
$tsub = $valores[4];
$Rescuad = $valores[5];
$Rescuad_m5 = $valores[6];
$Kespiral = $valores[7];

$suma= (float)$a+ (float)$d+ (float)$b;
$resta=(float)$c-(float)$b-(float)$d;
echo (float)$suma;
echo (float) $resta;


Debería obtener como resultados: $suma=3.3800e-006 y $resta=6.8200e-006
Sin embargo, obtengo: $suma=3 y $resta=-1

Muchas gracias de antemano!!!
  #2 (permalink)  
Antiguo 19/12/2011, 11:44
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Sumar decimales en php

Al parecer, PHP te está tomando esos datos como cadenas y no como números en notación científica, podrías intentar convertirlos primero a notación decimal, usando sprintf() o number_format().

Por otra parte:
Código PHP:
Ver original
  1. $par = explode('=',$linea);
  2. $valores[$i] = (double)$par;
  3. $i++;

$par es array, pero haces un cast a double y supongo que ahí hay ya un conflicto.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 19/12/2011, 12:41
 
Fecha de Ingreso: octubre-2011
Ubicación: Las Palmas de Gran Canaria
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Sumar decimales en php

Ya he probado anteriormente con:

$suma= number_format(($a + $d+$b),4);
$resta= number_format(($c + $b+$d),4);
pero en este caso los resultados son $suma=3.0000 y $resta=-1.0000

Tb he probado a darles formato a los parámetros después de la captura del txt, $a=number_format($a,4), pero nada...

Perdona por mi ignoracia pero no se solucionar el conflicto q m planteas con el array $par y el cast a double

Muchisimas gracias
  #4 (permalink)  
Antiguo 19/12/2011, 13:28
Avatar de lalooo  
Fecha de Ingreso: agosto-2011
Mensajes: 12
Antigüedad: 12 años, 8 meses
Puntos: 4
Respuesta: Sumar decimales en php

Cita:
Iniciado por Triby Ver Mensaje
Al parecer, PHP te está tomando esos datos como cadenas y no como números en notación científica, podrías intentar convertirlos primero a notación decimal, usando sprintf() o number_format().

Por otra parte:
Código PHP:
Ver original
  1. $par = explode('=',$linea);
  2. $valores[$i] = (double)$par;
  3. $i++;

$par es array, pero haces un cast a double y supongo que ahí hay ya un conflicto.
La función explode te regresa un arreglo, en tu caso tiene dos valores:
Código PHP:
Ver original
  1. $par = array('$a ', ' 2.0000e-006')
Lo que tienes que asignar en tu variable $valores[$i] es el segundo valor de cada "$par", que corresponde al valor que buscas
  #5 (permalink)  
Antiguo 20/12/2011, 11:31
 
Fecha de Ingreso: octubre-2011
Ubicación: Las Palmas de Gran Canaria
Mensajes: 17
Antigüedad: 12 años, 6 meses
Puntos: 0
Respuesta: Sumar decimales en php

lalooo muchas gracias pero ahora por otras razones tub q modificar los datos que aparecen en el txt ya hora aparecen así:

2.0000e-006

0.58000e-006

8.2000e-006

0.80000e-006

sin el nombre de la variable ni el signo igualdad, entonces ya no me es necesaria la función explode pero muchas gracias por la ayuda.

Etiquetas: Ninguno
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 10:32.