Convierta una cadena que contenga un número en notación científica en un doble en PHP

1 minuto de lectura

Necesito ayuda para convertir una cadena que contiene un número en notación científica a doble.

Cadenas de ejemplo: “1.8281e-009” “2.3562e-007” “0.911348”

Estaba pensando en descomponer el número en el número de la izquierda y el exponente y luego hacer los cálculos para generar el número; pero, ¿hay una forma mejor/estándar de hacer esto?

$f = (float) "1.8281e-009";
var_dump($f); // float(1.8281E-9)

function decimal_notation($float) {
        $parts = explode('E', $float);

        if(count($parts) === 2){
            $exp = abs(end($parts)) + strlen($parts[0]);
            $decimal = number_format($float, $exp);
            return rtrim($decimal, '.0');
        }
        else{
            return $float;
        }
    }

trabajar con 0.000077240388

La siguiente línea de código puede ayudarlo a mostrar el valor bigint,

$token=  sprintf("%.0f",$scienticNotationNum );

referirse con esto Enlace.

avatar de usuario
Luca Borrione

$float = sprintf('%f', $scientific_notation);
$integer = sprintf('%d', $scientific_notation);
if ($float == $integer)
{
    // this is a whole number, so remove all decimals
    $output = $integer;
}
else
{
    // remove trailing zeroes from the decimal portion
    $output = rtrim($float,'0');
    $output = rtrim($output,'.');
}

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad