Fließkomma

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Fließkomma

    PHP-Code:
        $s "56.23";

        
    # Berechnung der vollen Grad
        
    $grad floor(doubleval($s));

        
    # Berechnung der Minuten
        
    $tmp fmod($s$grad) * 60;

        
    $min floor($tmp);

        
    # Berechnen der Sekunden
        
    $sek fmod($tmp$min);

        echo 
    $sek
    Das Ergbnis ist 0.79999999999981, sollte aber nur 0.8 sein.

    Wieso??
    Zuletzt geändert von uschi; 16.04.2005, 21:04.

  • #2
    äußerst merkwürdig:
    PHP-Code:
    <?
        $s = 56.23;
        $s = ($s - floor($s)) * 60 ;
        echo ''. $s - floor($s)." : mit ''. davor\n";
        echo $s - floor($s)." : ohne";
    ?>
    gibt folgendes aus:
    Code:
    0.8 : mit ''. davor
    0.79999999999981 : ohne
    Würde ein round($s,1) vorschlagen.

    Kommentar


    • #3
      Das hängt mit der Art und Weise zusammen, wie ein Computer Fließkommazahlen speichert bzw. mit ihnen rechnet. Deshalb kommen manchmal "komische" Ergebnisse raus.
      Ich schätze das könnte in diesem Fall zutreffen.
      hopka.net!

      Kommentar


      • #4
        wenn ich round verwende rundet er ja entweder ab oder auf.
        hier soll ja immer abgerundet werden... komisch, du sagst es!

        Kommentar


        • #5
          Naja, aber ich dank dir auf jeden Fall Milian!!

          Ohne dich wär' ich wohl nie draufgekommen.

          Kommentar


          • #6
            Was willst du daraus eigentlich berechnen? Willst du die Zahl 56.23 ins Gradmaß überführen? Als: Grad [°] Minuten ['] Sekunden ['']

            Kommentar


            • #7
              Genau! Minuten ' und Sekunden ''

              Sag jetzt bitte nicht, dafür gibt's schon ne fertige Funktion in php.
              Zuletzt geändert von uschi; 16.04.2005, 22:23.

              Kommentar


              • #8
                nicht das ich wüsste, aber es hat einfach mein Interesse geweckt.

                Aber ich verstehe deinen Rechenweg nicht wirklich. Um von einer beliebigen Zahl zu einer Gradzahl zu kommen, muss man doch mit PI arbeiten, du subtrahierst nur und rundest ab

                PHP-Code:
                <?
                    $zahl = 12.34; // Zahl im Arcus
                    $gradmaß = $zahl / (2 * pi()) * 360;
                    $grad = floor($gradmaß); // Grad im Gradmaß (360°)
                    $rest = $gradmaß - $grad;
                    $minuten = floor($rest * 60); // Bogenminuten
                    $rest = ($rest * 60) - $minuten;
                    $sekunden = round($rest * 60,2); // Bogensekunden
                    
                    echo $grad.'° '.$minuten.'\\' '.$sekunden.'"';
                ?>
                So hätte ich mir die Kiste vorgestellt.
                Zuletzt geändert von Milian; 16.04.2005, 22:14.

                Kommentar


                • #9
                  Der Rechenweg steht genauso, wie er ich ihn in php umgesetzt habe in unserem Mathelehrbuch...

                  Ps.: Nette Lösung. :=)

                  Kommentar

                  Lädt...
                  X