Multiplikationsproblem!

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

  • Multiplikationsproblem!

    Hallöchen - habe mal wieder ein Problem!

    Habe einen Preis

    $preis1 = 112; (dieser wurde im Script berechnet)

    Nun kommt ein weiterer Wert aus der Datenbank und zwar

    $preis2 = 0.5;

    dieser ist einem Double-Feld gespeichert.
    Wenn ich nun eine Multiplikation durchführe:

    $endpreis = $preis1 * $preis2;

    ergibt $endpreis = 0 !!!! Warum???

    Habe es mal überprüft mit

    print 112*0.5;

    es kommt korrekt 56 raus - warum bei meiner Multiplikation nicht??

    Ich komm einfach nicht drauf... Kann bitte jemand helfen??

    Mfg
    Sascha



  • #2
    mach mal vorher:

    settype($preis1,"double");
    settype($preis2,"double");

    $endpreis = $preis1*$preis2;
    echo $endpreis;
    [color="#334D7B"]"Los, lass uns loslegen! Hm ? Quatschen können wir hinterher immer noch!"[/color]
    [color="#9C5245"]"Aber Bommel, wir können jetzt nicht bumsen. Wir müssen doch erst den Kindern - ... "[/color]
    [color="#334D7B"]"Ja ja ja. Du willst immer nur das Eine. Buchstabenzeigen, Buchstabenzeigen - meine Gefühle sind dir wohl scheißegal."[/color]

    © Harald Schmidt

    Kommentar


    • #3
      Wenn ich das mache, zerschießt der mir alles!

      Dann ist $preis1 = 1, $preis2 = 1 und $endpreis = 1 !!!

      wenn ich es jedoch mit

      $preis1 = (double) $preis1;
      $preis2 = (double) $preis2;

      dann ist
      $preis1 = 112;
      $preis2 = 0.5

      wenn ich dann wieder

      $endpreis = $preis1 * $preis2;

      mache, dann ist $endpreis = 0;

      Was soll der Müll - ich verstehe gar nix!

      Mfg
      Sascha


      Kommentar


      • #4
        was gibt denn

        $endpreis = $preis2 * (float)$preis1;
        ---
        settype($endpreis, 'double');
        $endpreis = $preis1 * $preis2;
        ---
        settype($endpreis, 'double');
        $endpreis = $preis2 * (float)$preis1;

        ?
        mein Sport: mein Frühstück: meine Arbeit:

        Sämtliche Code-Schnipsel sind im Allgemeinen nicht getestet und werden ohne Gewähr auf Fehlerfreiheit und Korrektheit gepostet.

        Kommentar


        • #5
          Hi,

          definiere vorher mal

          $endpreis = 0;
          Yuppi, endlich Elite ...

          Kommentar


          • #6
            also erstmal zw. variablen und operatoren SOLLTEN keine leerzeichen sein (obs hier entscheidend ist weiss ich nicht)

            Ansonsten probier mal $end = ($1*$2);

            Kommentar


            • #7
              bist Du ganz sicher, dass sowohl $preis1 wie auch $preis2 einen Wert haben?
              ich vermute mal dass $preis1 = 0 ist
              Sicher dass die Berechnung im Script stimmt?????
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                @ GFE|Tweak:
                Zwischen Variablen und Operatoren können ruhig Leerzeichen stehen, daß erhöht nur die Lesbarkeit, mehr nicht.

                @saschak:
                Hast Du bei $preis1 vorher mit der funktion number_format gearbeitet?
                Das hat mir vorgestern sämtliche Berechnungen zerlegt
                number_format() immer erst nach den Berechnungen einsetzen.
                Of all things I've lost
                I miss my mind the most

                Kommentar


                • #9
                  HI,

                  paste doch einfach mal die Berechnung. Dann kann man wenigstens mal was sehen, ist doch schwierig darüber zu mutmaßen worin das Problem liegen könnte.

                  Grüße, Marcus.

                  Kommentar


                  • #10
                    Hast Du an irgendeiner Stelle in Deinem Script mit setLocale gearbeitet?

                    setLocale("de_DE") führt beispielsweise dazu das wenn einer der zum rechnen verwendeten Werte ein String ist dieser ein Komma statt eines Punktes als Dezimaltrennzeichen verwenden muß.

                    BTW: MySQL liefert immer Strings zurück ... !
                    carpe noctem

                    [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                    [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                    Kommentar


                    • #11
                      HIIIIILLLLLFFFFEEEEE!!!!

                      Der Wert von $endpreis wird am Anfang auf 0 gesetzt!
                      Ich habe mir die Werte von $preis1 und $preis2 per "print"-Befehl
                      ausgeben lassen...

                      $preis1 = 112; (berechnet)
                      $preis2 = 0.5; (aus Datenbank: Typ double)

                      Diese Werte sind korrekt...

                      Wenn ich jetzt $endpreis = ($preis1 * $preis2); eingebe kommt 0 raus!!! Ich krieg langsam nen Hals...

                      Habe all' Eure Hilfen ausprobiert - NICHTS funktioniert!

                      Habe folgende Versuche gemacht:

                      print (0.5 * $preis1);

                      Das ergibt korrekt 56!!

                      $tblWert = $getwert["wert"];
                      print (112 * $tblWert);

                      Das ergibt null!!


                      Sprich: Er hat ein Problem mit dem Wert, der aus der Datenbank kommt...

                      Nur welches????

                      Hat jemand ne Lösung??

                      Der Wert ist in der Datenbank, wie ich bereits erwähnte, als Double gespeichert - habe auch schon varchar oder ähnliches versucht. Mit dem Casting der Variablen bin ích eigentlich auch schon durch...

                      Mfg
                      Sascha


                      Kommentar


                      • #12
                        @GOTH


                        Vielen Dank... Das war das Problem.... Da in diesem Script noch Datumsberechnungen sind, habe ich am Anfang

                        setlocale(LC_ALL,"german");

                        gesetzt... Ich habe das jetzt mal rausgelöscht und


                        ES FUNKTIONIERT

                        Vielen, vielen lieben Dank...

                        Ich habe doch gewußt, dass ich mich auf Euch verlassen kann...


                        Mfg
                        Sascha


                        Kommentar


                        • #13
                          Hmmnnn ... auch Grufties mögen glückliche Menschen ...
                          carpe noctem

                          [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
                          [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

                          Kommentar

                          Lädt...
                          X