Sandra: mathematische funktion oder pattern matching?

Hallo Forumler,

wie kann ich mit php einen Wert vom Format 0,000064 in das Format 6,4E-6 umwandeln?
Der Wert wird uebrigens per Select aus einer MySQL-Datenbank ausgelesen. Kann man diese Umformatierung auch schon mit der SQL-Abfrage erreichen?

Vielen Dank,
Sandra

  1. Hallo Sandra,

    eigentlich ist für Formatierungen ja sprintf zuständig, aber ehrlich gesagt habe ich in der php-doku auch keinen Formatstring gefunden, der das gewünschte Ergebnis liefert, deswegen jetzt mit einer weniger eleganten Lösung:

    <?
    $zahl="0,000064";
    $komma=strpos($zahl, ",");
    $nachkomma=substr($zahl, $komma+1);
    while(substr($nachkomma,0,1)=="0")
    {
    $nachkomma=substr($nachkomma, 1);
    $nachkommastellen++;
    }
    $nachkommastellen+=2;
    $formatiertezahl=substr($nachkomma,0,1).",".substr($nachkomma, 1)."E-".$nachkommastellen;
    echo $formatiertezahl;
    ?>

    Theoretisch hättest Du natürlich auch in MySQL Stringfunktionen zur Verfügung, Du kannst also so etwas machen, wie 'Select LEFT(zelle, 1)...', die Formatierung damit zu erreichen, ist allerdings wohl recht anspruchsvoll. Ich bin ja immer noch im Glauben, daß man dieses Zahlenformat relativ einfach spezifizieren sollen könnte, aber wie gesagt, gefunden hab' ich's nicht.

    Viele Grüße
    Stephan

    1. Hi!

      eigentlich ist für Formatierungen ja sprintf zuständig, aber ehrlich gesagt habe ich in der php-doku auch keinen Formatstring gefunden, der das gewünschte Ergebnis liefert,

      Falls das PHP-sprintf kompatibel zu dem Standard-C-sprintf ist (was ich fuer wahrscheinlich halte), dann sollte es
        sprintf("%E", $zahl)
      wohl tun.

      HTH && So long

      1. Hi Calocybe,

        Falls das PHP-sprintf kompatibel zu dem Standard-C-sprintf ist (was ich fuer wahrscheinlich halte), dann sollte es
          sprintf("%E", $zahl)
        wohl tun.

        nein, hatte ich auch probiert, aber da ist php wohl nicht kompatibel (es kommt ein leerer string raus :-( )

        Viele Grüße
        Stephan