Ergebnis 1 bis 3 von 3
  1. #1
    W32.FunLove
    Registriert seit
    15.08.2007
    Beiträge
    125

    Standard Rechnen mit sehr großen Zahlen

    Hallo,

    ich habe eine Funktion geschrieben um die Fibonacci Folge aufzustellen. Jedoch wird diese nach einer Zeit ungenau. Die Funktion sieht folgendermaßen aus:
    PHP-Code:
    function buildFolge($bis)
    {
        
    $folge+++91;1+++93; = 1;
        
    $folge+++91;2+++93; = 1;
        
        for(
    $i 3$i <= $bis$i++)
            
    $folge+++91;$i+++93; = bcadd($folge+++91;$i 1+++93;, $folge+++91;$i 2+++93;);
            
        return 
    $folge;

    Formatiert wird das Ergebniss mit number_format (außerhalb der Funktion, bei der Ausgabe):
    PHP-Code:
    number_format($folge+++91;$i+++93;, 0',''.'); 
    Es wird ca. bei der 79. Stelle ungenau (die erste wo es mir aufgefallen ist).

    77. 5.527.939.700.884.757
    78. 8.944.394.323.791.464
    79. 14.472.334.024.676.220

    Die letzte Stelle müsste eigentlich eine 1 sein, ist es aber nicht. Zwar kommt es von der Größenordnung hin, aber es ist halt nicht richtig genau.

    Gibt es eine Möglichkeit mit so großen Zahlen noch genau zu rechnen?

    mfg,
    litlein

    Edit: wtf? das Forum macht aus den Klammern für Arrays +++91; bzw. +++93;

  2. #2

  3. #3
    W32.FunLove
    Registriert seit
    15.08.2007
    Beiträge
    125

    Standard

    Hi,

    wie du meinem Quelltext entnehmen kannst benutze ich die BC Bibliothek bereits.

    Ich habe das Problem aber jetzt gefunden.
    Die Rechnung und das Ergebniss stimmt. Der Fehler liegt nur in der Ausgabe mithilfen von number_format. Die Funktion scheint mit großen Zahlen ein paar Probleme zu haben.

    edit:
    Mit der selbstgeschriebenen Funktion klappts einwandfrei:
    Code:
    function formatnumber($number)
    {
        if(strlen($number) <= 3)
            return $number;
            
        $rest = strlen($number) % 3;
        if($rest)
            $teil[0] = substr($number, 0, $rest);
        $count = 0;
        do
        {
            $teil[] = substr($number, $count * 3 + $rest, 3);
            $count++;
        } while (strlen($number) > ($count * 3 + $rest));
        
        return implode('.', $teil);
    }
    Geändert von litlein (28.10.2010 um 17:12 Uhr)

Ähnliche Themen

  1. textBox Rechnen
    Von _Xclusive_ im Forum .NET Sprachen - Techniken
    Antworten: 2
    Letzter Beitrag: 17.03.2009, 18:53
  2. DL-Speed von US-Downloader sehr sehr langsam
    Von Riku im Forum Suche Tutorials
    Antworten: 0
    Letzter Beitrag: 15.12.2008, 19:57
  3. Antworten: 6
    Letzter Beitrag: 30.11.2008, 12:06
  4. Zahlen oder nicht zahlen?
    Von zock im Forum Rechtliches
    Antworten: 13
    Letzter Beitrag: 16.02.2008, 17:26

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •