Foros del Web » Programando para Internet » PHP »

Problema al cambiar el formato de string a float

Estas en el tema de Problema al cambiar el formato de string a float en el foro de PHP en Foros del Web. Hola, buenas tardes a todos. ¿Alguien sabe cómo pasar de un formato string a float?, teniendo en cuenta que el string contiene un número decimal ...
  #1 (permalink)  
Antiguo 15/06/2005, 08:17
Avatar de MaNu-SG  
Fecha de Ingreso: junio-2005
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Problema al cambiar el formato de string a float

Hola, buenas tardes a todos.

¿Alguien sabe cómo pasar de un formato string a float?, teniendo en cuenta que el string contiene un número decimal con coma, en lugar de un punto.


Lo explico más detalladamente:

En mi web necesito capturar dos parámetros que me pasan mediante URL (método GET) y hacer una suma. El problema radica en que los parámetros son dos cantidades en euros con el formato normal de las monedas (p.ej: 21,50 y 6,00)

Entonces, necesito sumar ambos números, pero al tener una coma "," en lugar de punto "." no puedo sumarlos de forma correcta, puesto que sólo me suma las partes enteras del número.

Muchas gracias. Un saludo.
  #2 (permalink)  
Antiguo 15/06/2005, 08:58
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
Código PHP:
function pasaranumero ($string) {
  
$string str_replace(".","",$string); //borro los separadores de miles, si hay
  
$string str_replace(",",".",$string); //convierto las comas en puntos
  
$string settype($string,"double"); // lo convierto en un número
  
return $string

  #3 (permalink)  
Antiguo 15/06/2005, 09:08
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 5 meses
Puntos: 1
la solución de Seppo no es del todo recomendable. Siempre hay que tratar de encontrar funciones nativas de PHP en lugar de crear funciones propias. Además que el tipo doble como tal no existe según la documentación oficial que muestra los tipos de dato en php

http://mx.php.net/set_type

lee la documentación de

http://mx.php.net/number_format

esa función nativa de php soluciona tu problema, a pesar de que devuelve un String. Si por alguna razón deseas un double, puedes hacer un cast (float)

saludos
  #4 (permalink)  
Antiguo 15/06/2005, 09:40
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
¿Cómo que no existe? Justamente busqué en settype los tipos que admite para reponderle
[q]Los valores posibles para type son:

* "integer"
* "double"
* "string"
* "array"
* "object"[/q]
number_format me parece que hace al revés de lo que pide
  #5 (permalink)  
Antiguo 15/06/2005, 13:51
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 5 meses
Puntos: 1
segun php.net
Código:
 "float" (only possible since PHP 4.2.0, for older versions use the deprecated variant "double")
double está en desuso

y lo que "el pide" solo "el" lo sabe, number_format es una sugerencia. saludos
  #6 (permalink)  
Antiguo 16/06/2005, 01:07
Avatar de MaNu-SG  
Fecha de Ingreso: junio-2005
Mensajes: 5
Antigüedad: 18 años, 10 meses
Puntos: 0
Cita:
Iniciado por Seppo
Código PHP:
function pasaranumero ($string) {
  
$string str_replace(".","",$string); //borro los separadores de miles, si hay
  
$string str_replace(",",".",$string); //convierto las comas en puntos
  
$string settype($string,"double"); // lo convierto en un número
  
return $string

Finalmente he usado este código, pero date cuenta que el settype devuelve un booleano, así que estás machacando el valor de $string con un 1.

settype($string,"double"); // lo convierto en un número

Cita:
Iniciado por sism82
la solución de Seppo no es del todo recomendable. Siempre hay que tratar de encontrar funciones nativas de PHP en lugar de crear funciones propias. Además que el tipo doble como tal no existe según la documentación oficial que muestra los tipos de dato en php

http://mx.php.net/set_type

lee la documentación de

http://mx.php.net/number_format

esa función nativa de php soluciona tu problema, a pesar de que devuelve un String. Si por alguna razón deseas un double, puedes hacer un cast (float)

saludos
number_format necesita un float, que es precisamente lo que buscaba, así que esa solución no me ha valido.

Gracias a ambos por vuestra preocupación. Un saludo.
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 11:47.