Convertir string a float

  • Autor Autor Prospero
  • Fecha de inicio Fecha de inicio

Prospero

Eta
Verificación en dos pasos activada
Hola amigos, resulta que traigo un texto externo. pero quiero tratarlo dentro de mi script y trate de convertirlo en numero trabajable y no hay caso probe todo lo existente y no me lo toma como numero que puede ser?


// >> viene externo $dolar[1] = " 76,2500 " asi viene....

Esto es lo que se muestra cuando ejecuto:

HTML:
<html><head></head><body>76.2500<br>bool(false)
<br>La Suma es: 2.1</body></html>

esto es el tratamiento que le doy:

PHP:
echo $dls = str_replace(",", ".", $dolar[1]);
echo '<br>';

var_dump(is_float($dls));
$numero = 2.1;

$suma = floatval($dls) + $numero;

echo "La Suma es: " .$suma;

Probe ahora....

PHP:
$var5 = $dolar[1];

     if( settype($var5, "float") == true ) {
        if( is_float($var5) == true )
            echo "\$var5 es ahora float y su valor es [".$var5."].<br/>";
    }

y me devuelve

HTML:
$var5 es ahora float y su valor es [0].

No entiendo porque motivo cuando le hago conversion de string a float me lo deja en cero.
 
Última edición:
prueba
$dls = str_replace(",", ".", trim($dolar[1]));
 
no no me lo sigue tomando en cero osea imprime tu codigo con el punto y todo pero cuando hago operacion por ejemplo sumarle un dos solo muestra un 2 no suma lo toma en cero, o cuando le pongo para mostrar solo 2 decimales echo $ave= round($dls, 2); tambien me lo muestra en cero.
prueba
$dls = str_replace(",", ".", trim($dolar[1]));
 
Alguien mas por ahi???
 
Pon todo tu código completo actual que no funciona para tratar de encontrar el problema, yo hice un ejemplo con

PHP:
$dato=" 76,500 ";
$dato=str_replace(",",".",trim($dato));
$num=floatval($dato);
echo $num;

y funciona bien. Aunque claro que como tu dato viene de fuera puede ser que ahí esté el problema.
 
Insertar CODE, HTML o PHP:
<?php
$dato = $dolar[1];
$dato=str_replace(",",".",trim($dato));
$num=floatval($dato);
echo $num;


?>


el codigo completo: y resultado da 0
 
Última edición:


PHP:
$num = (float) floatval($dato);
/** Versiones superiores a PHP 7.4 **/
 
Tambien podrias usar format number de php para convertirlo mas facil.
 
Insertar CODE, HTML o PHP:
<?php
$dato = $dolar[1];
$dato=str_replace(",",".",trim($dato));
$num=floatval($dato);
echo $num;


?>


el codigo completo: y resultado da 0
¿y dónde cargas $dolar[1]?
¿qué pasa si en la primera línea haces echo "[".$dato[1]."]<br>"; ?