tutorials.de Buch-Aktion 05/2012
Seite 2 von 2 ErsteErste 12
ERLEDIGT
NEIN
ANTWORTEN
29
ZUGRIFFE
821
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #16
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Mit welchen PHP-Versionen arbeitet Ihr denn so?
    Ich hab grad mal mit PHP 5.1.4 und 4.4.2 mit folgendem Code getestet und das Fragezeichen wurde nicht ausgegeben, die Pruefung ist also wie erwartet verlaufen.
    PHP-Code:
    <?php
    $a
    =59.99;
    $b=59.99;
    $a5=md5($a);
    $b5=md5($b);
    if (
    $a5!=$b5)
    {
     echo 
    '?';
    }
    ?>
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  2. #17
    Registriert seit
    Mar 2002
    Ort
    Stuttgart (Baden-Württemberg)
    Beiträge
    984
    Blog-Einträge
    7
    Das funktioniert bei mir auch. Aber benutz mal den gegebenen Code, du wirst staunen Ich arbeite mit PHP 5.1.1
    PHP-Code:
    <?php
    $soll 
    = array('Forderungen'=> 59.97'a' => 0.02);
    $haben = array('USt' => 59.98'a' => 0.01);

    $summeSoll 0;
    foreach (
    $soll as $konto => & $betrag)
    {
        
    $betrag str_replace(',''.'$betrag);
        
    $betrag number_format($betrag2'.''');
        
    $summeSoll += $betrag;
    }
        
    $summeHaben 0;
    foreach (
    $haben as $konto => & $betrag)
    {
        
    $betrag str_replace(',''.'$betrag);
        
    $betrag number_format($betrag2'.''');
        
    $summeHaben += $betrag;


    echo 
    "Summe Soll: $summeSoll\n";
    echo 
    "Summe Haben: $summeHaben\n";
        
    echo 
    "<br>";
    var_dump($summeSoll === $summeHaben);

    if (
    $summeSoll != $summeHaben)
    {
        echo 
    'Ungleich';            // Beträge Soll/Haben stimmen nicht überein

    ?>
     
    Gruß mAu


    ──────────────────────────
    Ich auf flickr

    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!


  3. #18
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Bei mir ists 4.3.1
    aber das ist nicht die Frage..bei deinem Code gehts bei mir auch, aber nimm mal diesen:
    PHP-Code:
    <?php
    $soll
    =array
    (
    'Forderungen' => '59.99'
    );

    $haben=
    array
    (
    'USt' => '8.27',
    'WVK_Kost' => '0.00',
    'WVK_Kost' => '51.72',

    );


    $summeSoll 0;
    foreach (
    $soll as $konto => $betrag)
    {

        
    $betrag number_format($betrag2'.''');
        
    $summeSoll += $betrag;
    }
        
    $summeHaben 0;
    foreach (
    $haben as $konto => $betrag)
    {
        
        
    $betrag number_format($betrag2'.''');
        
    $summeHaben += $betrag;
    }
    echo 
    $summeSoll.'-'md5($summeSoll).'<br>';
    echo 
    $summeHaben.'-'md5($summeHaben).'<br>';

    echo(
    $summeSoll==$summeHaben)?'gleich':'nicht gleich';

    ?>
    nix geht.
    und wenn du jetzt mal die Werte etwas änderst, bspw.
    PHP-Code:
    $haben=
    array
    (
    'USt' => '8.29',
    'WVK_Kost' => '0.00',
    'WVK_Kost' => '51.70',
    ); 
    ..dann gehts auf einmal.
    War da nicht irgendwas mit Oktalzahlen, mit denen PHP intern arbeitet...in JS gibts da doch auch merkwürdige Sachen, und die hängen damit zusammen.
     

  4. #19
    Registriert seit
    Mar 2002
    Ort
    Stuttgart (Baden-Württemberg)
    Beiträge
    984
    Blog-Einträge
    7
    Das geht aber auch nur wirklich mit dem
    PHP-Code:
    $haben=
    array
    (
    'USt' => '8.29',
    'WVK_Kost' => '0.00',
    'WVK_Kost' => '51.70',
    ); 
    Mach ich
    PHP-Code:
    $haben=
    array
    (
    'USt' => '8.19',
    'WVK_Kost' => '0.00',
    'WVK_Kost' => '51.80',
    ); 
    Ist es ungleich... Und mein Code bringt bei dir das erwartete Ergebnis?
     
    Gruß mAu


    ──────────────────────────
    Ich auf flickr

    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!


  5. #20
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Hmm, komisch.

    Mal ein paar (abwegige) Theorien:
    • Quantenfluktuation
    • Gleitkomma-Fehler in modernen Prozessoren (man erinnere sich an den P1)
    • hoehere Gewalt
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  6. #21
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    @mAu nö...dein Code bringt bei mir nicht das erwartete Ergebnis:
    Code :
    1
    2
    
    Summe Soll: 59.99 Summe Haben: 59.99
    bool(false) Ungleich

    Noch eine weitere Theorie:
    der grosse Ignorator in seiner unendlichen Allmacht die Gesetze der Logik ausser Kraft gesetzt

    Ich werd das Gefühl nicht los, dass wir diese Problematik schon mal erörtert haben...
     

  7. #22
    Avatar von Dennis Wronka
    Dennis Wronka Dennis Wronka ist offline Soulcollector
    Registriert seit
    Apr 2002
    Ort
    Hong Kong
    Beiträge
    12.296
    Blog-Einträge
    231
    Mir faellt da grad mal was auf:
    Koennte es evtl. daran liegen, dass in dem Array 2 Indizes mit dem gleichen Namen existieren (WVK_Kost)?
     
    PHP Class Collection - PHP-Klassen fuer PHP 5 (und Teilweise auch fuer PHP 4)
    Updates: Catcher 1.1, FTPConnection 1.2, MultiSQL 1.1, RSS2 1.1, SMTPConnection 1.4
    __________________
    EasyLFS - Hintergrundinformationen, Installationsanleitung, Softwareliste und Download
    EasyLFS Projektthread - Informationen, Status und Diskussion zu meiner Linux-Distribution
    __________________
    Ich bin die Schildkroete, mein Sohn. Ich habe das Universum erschaffen, aber bitte mach mir daraus keinen Vorwurf; ich hatte Bauchschmerzen.
    __________________
    Zitat Zitat von Friedrich Nietzsche
    Man muss noch Chaos in sich haben, um einen tanzenden Stern gebaeren zu koennen.

  8. #23
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Jo...war doch kein Rechenfehler habs eben auch bemerkt und editiert.
    Der Logikfehler besteht aber weiterhin.
     

  9. #24
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    Nach meinen Test, bin ich zu dem Entschluss gekommen, dass es definitiv an dem Punkt liegt. Die Variable also vom Type float ist. Nach weiteren Test, bin ich dann dazu gekommen, dass es kein "richtiges" float ist. Wendet man nun ein doppeltes Type-Casting an, funktioniert es.
    PHP-Code:
    <?php
    $soll 
    = array('Forderungen'=> 59.97'a' => 0.02);
    $haben = array('USt' => 59.98'a' => 0.01);

    $summeSoll 0;
    foreach (
    $soll as $konto => & $betrag)
    {
        
    $betrag str_replace(',''.'$betrag);
        
    $betrag number_format($betrag2'.''');
        
    $summeSoll += $betrag;
    }

    $summeHaben 0;
    foreach (
    $haben as $konto => & $betrag)
    {
        
    $betrag str_replace(',''.'$betrag);
        
    $betrag number_format($betrag2'.''');
        
    $summeHaben += $betrag;
    }

    echo 
    "Summe Soll: $summeSoll ".md5($summeSoll)."<br>";
    echo 
    "Summe Haben: $summeHaben ".md5($summeHaben)."<br>";
    echo 
    "<hr>";
    var_dump($summeSoll === $summeHaben);echo "<br>";
    var_dump($summeSoll);echo "<br>";
    var_dump($summeHaben);echo "<br>";

    echo 
    "<hr>";
    $summeSoll = (float)(String)$summeSoll;
    $summeHaben = (float)(String)$summeHaben;

    var_dump($summeSoll === $summeHaben);echo "<br>";
    var_dump($summeSoll);echo "<br>";
    var_dump($summeHaben);echo "<hr>";

    if (
    $summeSoll != $summeHaben)
    {
        echo 
    'Ungleich';            // Beträge Soll/Haben stimmen nicht überein
    }
    ?>
    Geändert von fanste (16.06.06 um 14:08 Uhr)
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  10. #25
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ja schon, aber bei ($summeSoll != $summeHaben) wird der Typ doch garnicht berücksichtigt....normalerweise
     

  11. #26
    Registriert seit
    Mar 2005
    Ort
    Bühl/Baden
    Beiträge
    2.330
    Nein. Eigentlich nicht. Wenn man vor der Prüfung hingeht und die Werte (in einem unterschiedlichen type) von Hand zuweist, funktioniert es auch.
    PHP-Code:
    $summeSoll 59.55;
    $summeHaben "59.55";

    var_dump($summeSoll === $summeHaben);echo "<br>";
    var_dump($summeSoll);echo "<br>";
    var_dump($summeHaben);echo "<br>"
    Und wenn es ein Bug wäre, dann würde er aber schon recht lange bestehen. Bei meinem zweit Testserver mit PHP 4.3.2 RC1 klappt es nämlich auch nicht.
    Geändert von fanste (16.06.06 um 14:24 Uhr)
     
    Gruß fanste

    Benutze bitte immer die passende Highlight-Tags.(z.B: für PHP [php] [/php] Allgemein: [highlight=SCRIPTSPRACHE]Code[/highlight] )

    Problem gelöst? Dann markiere das Thema bitte als erledigt!
    Beachte bitte die Netiquette. Insbesondere Punkt 15.

  12. #27
    Registriert seit
    Mar 2002
    Ort
    Stuttgart (Baden-Württemberg)
    Beiträge
    984
    Blog-Einträge
    7
    Es kann doch nur ein Bug sein... Ich mein, wenn 1.)Hashwerte identisch, 2.)var_dump identischen Typ und Wet angibt, 3.)es mit "gleichen" Arrays klappt...
     
    Gruß mAu


    ──────────────────────────
    Ich auf flickr

    * Unformatierten Quellcode schaue ich mir _nicht_ an!
    * Sollte ich euch bei einer Frage weitergeholfen haben, würde ich mich über eine positive Bewertung freuen.
    * Bitte die Netiquette beachten.
    * Vergesst nicht, beantwortete Fragen als erledigt zu markieren!


  13. #28
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Hallöle,

    was mich verwundert ist das dieser Code:
    PHP-Code:
    echo var_dump($summeHaben).'<br>';
    echo 
    gettype($summeHaben); 
    das ausgibt:
    Code :
    1
    2
    
    float(59.99)
    double

    Gibts dafür ein Grund?
    Geändert von MArc (16.06.06 um 16:42 Uhr)
     
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

  14. #29
    Registriert seit
    Dec 2002
    Ort
    Trier
    Beiträge
    17.502
    Blog-Einträge
    10
    Der Grund wird sein, dass die Variable den Gleitkommazahlwert „59.99“ besitzt.
     
    Markus Wulftange

  15. #30
    Registriert seit
    Apr 2006
    Ort
    Freiburg
    Beiträge
    290
    Blog-Einträge
    2
    Mahlzeit,

    mir ist dieser Thread gerade wieder eingefallen und ich wollte Fragen:
    Ist es nun ein Bug?

    Gruss,
    MArc
     
    Kryn.cms - einfach anders.

    "When you're talking about webserver, as it is, with no rules, well then, baby you'd better block every tiny hole of your server!" - MArc (inspired by Bruce L.)

Ähnliche Themen

  1. <ul> ist nicht gleich <ul>
    Von crunch im Forum Javascript & Ajax
    Antworten: 3
    Letzter Beitrag: 28.12.10, 17:05
  2. Java2D oder doch gleich Java3D
    Von PeterStaab im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 15.12.07, 14:22
  3. KUbuntu oder doch besser gleich Debian ?
    Von Liro im Forum Linux & Unix
    Antworten: 11
    Letzter Beitrag: 03.07.07, 21:11
  4. grösser gleich bzw. kleiner gleich
    Von saila im Forum PHP
    Antworten: 5
    Letzter Beitrag: 11.09.06, 13:47
  5. größer gleich oder kleiner gleich
    Von saila im Forum Relationale Datenbanksysteme
    Antworten: 0
    Letzter Beitrag: 10.09.06, 23:35