weiso nur?

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

  • weiso nur?

    hallo, habe ein reisen problem, kann aber ncihts sagen warum das ist oder wieso das nicht immer so ist, aber vielleicht wisst ihr warum:

    also, es geht im dem fall um kontostände.
    habe mehre kunden die einen kontostand barufen müssen.
    jetzt ist das so aufgebaut in eine mysql table, mit einer spalte die als decimal mit 10,2 definiert ist. in der wertden eingetragen g für gutschrift oder r für rechung, also minus und plus. und aus dem setzt sich der konto stand zusammen. jetzt ist es so, das es bei macnhen funzzt, habe auch beim herauslesen ltrim bzw. rtrim. nur bei macnhen zeigt er statt null
    z.b sowas an:-8.52651282912E-14 wboei es simples addieren bzw. subtr. ist mit max 2 kommastellen !?!?

    woran kann das liegen?

    danke für jede info.
    bei fragen immer
    windows - pc: Start -> Ausführen -> cmd (command) - format c:
    linux : lass es , es hat sicher einen sinn so
    --
    php-forum.at


    >>>>dont ask me why<<<<

  • #2
    mit welcher Formel wird der Kontostand berechnet.
    mfg
    Günni


    Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
    Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
    Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
    City-Tiger - Online durch die Straßen tigern...

    Kommentar


    • #3
      wie gesagt ganz einfach addition bzw. subtr.

      es ist ein typ ja in der table mit r oder g
      je nachdem welcher typ es ist ist ein + oder ein -
      also z.b

      if($kontostand_array['typ'] =='r') {
      $stand_knd= $stand_knd - $kontostand_array_betrag;
      }elseif($kontostand_array['typ'] =='g') {
      $stand_knd = $stand_knd + $kontostand_array_betrag;
      bei fragen immer
      windows - pc: Start -> Ausführen -> cmd (command) - format c:
      linux : lass es , es hat sicher einen sinn so
      --
      php-forum.at


      >>>>dont ask me why<<<<

      Kommentar


      • #4
        Könntest du mal die werte von
        $stand_knd und $kontostand_array_betrag posten, bei denen der fehler auftritt.
        mfg
        Günni


        Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
        Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
        Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
        City-Tiger - Online durch die Straßen tigern...

        Kommentar


        • #5
          mmhh,h wie genau meisnt du das , kann dir die ausgabe shcicken wenn ich ein echo davor setze:

          also der php-syntax lautet so:
          PHP-Code:
              if($kontostand_array['typ'] =='r') {
              echo
          "<br>kontostand_array_betrag:-$kontostand_array_betrag ergibt:".$stand_knd$stand_knd $kontostand_array_betrag;
              }elseif(
          $kontostand_array['typ'] =='g') {
              echo
          "<br>kontostand_array_betrag:+$kontostand_array_betrag ergibt:".$stand_knd $stand_knd $kontostand_array_betrag;
              } 
          wobei immer als stand mit 0 begonnen wird,
          und dann mit echo $stand_knd ausgegeben wird.
          und so sie ht die ausgabe von de beilspiel aus:

          kontostand_array_betrag:-1080.00 ergibt:-1080
          kontostand_array_betrag:-50.40 ergibt:-1130.4
          kontostand_array_betrag:+1080.00 ergibt:-50.4
          kontostand_array_betrag:-80.40 ergibt:-130.8
          kontostand_array_betrag:+50.40 ergibt:-80.4
          kontostand_array_betrag:+80.40 ergibt:-8.52651282912E-14

          hilft dir das weiter?
          bei fragen immer
          windows - pc: Start -> Ausführen -> cmd (command) - format c:
          linux : lass es , es hat sicher einen sinn so
          --
          php-forum.at


          >>>>dont ask me why<<<<

          Kommentar


          • #6
            Hi,
            das problem muss an den Variablen liegen.
            Wenn du die -1080 - 50,40 rechnest bekommst du -1130,4
            wenn du -1130,4 +1080.00 rechnest kommst du auf -50,4
            und dies ziehst sich bis an das Ende.
            Die letzte komische Zahl sollte eigentlich 0 darstellen.
            mfg
            Günni


            Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
            Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
            Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
            City-Tiger - Online durch die Straßen tigern...

            Kommentar


            • #7
              eben, null würde auch passen.
              es geht ja auch bei fast jeden nur sind leider 3 ausnahmen dabei wo ich echt nciht daraus schlau werde.

              spalten def. passt aus der table.
              keine leerzeichen,
              kann es vielleicht am punkt statt , liegen, ich meine mysql mag ja keine , sondern nur . als kommastellen?

              danke
              bei fragen immer
              windows - pc: Start -> Ausführen -> cmd (command) - format c:
              linux : lass es , es hat sicher einen sinn so
              --
              php-forum.at


              >>>>dont ask me why<<<<

              Kommentar


              • #8
                ...genau. wegen der unterschiedlichen mantissenlängen is z.B. -80.4 + 80.40 nicht genau 0, sonder nur was
                klitzekleines. also entweder gleiche mantissen oder halt round()...
                eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                Kommentar


                • #9
                  Hoffe es hat dir bis jetzt weitergeholfen.
                  mfg
                  Günni


                  Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                  Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                  Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                  City-Tiger - Online durch die Straßen tigern...

                  Kommentar


                  • #10
                    also, resultate:

                    habe jetzt sachen gemacht wie statt 3,40 zu 3,41 gemacht usw.=> negativ, nach wie vor das selbe.
                    habe einen round ($betrag,2); gemacht steht dort -0 ;-),auch nicht das wahre,
                    dann habe ich ein
                    PHP-Code:
                    ereg_replace('.',',',$kontostand_array['betrag']); 
                    gemacht, na das war erst lustig, der konnte mir keine punkte ersetzen, ich meine nicht ordentlich, er hat statt punkte und zahlen nur mehr ,,,,, gmeacht !?!?!?!
                    bei fragen immer
                    windows - pc: Start -> Ausführen -> cmd (command) - format c:
                    linux : lass es , es hat sicher einen sinn so
                    --
                    php-forum.at


                    >>>>dont ask me why<<<<

                    Kommentar


                    • #11
                      Die Punkte bei den zahlen stimmen ja. Die nachstellen werden mit . definiert und nicht mit ,
                      mfg
                      Günni


                      Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                      Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                      Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                      City-Tiger - Online durch die Straßen tigern...

                      Kommentar


                      • #12
                        tja, dann schauts aber schlecht aus, das kann doch kein bug sein, oder?
                        bei fragen immer
                        windows - pc: Start -> Ausführen -> cmd (command) - format c:
                        linux : lass es , es hat sicher einen sinn so
                        --
                        php-forum.at


                        >>>>dont ask me why<<<<

                        Kommentar


                        • #13
                          ...kein bug, bekanntes problem.
                          sollte aber mit
                          PHP-Code:
                          $stand_knd round($stand_knd $kontostand_array_betrag,2); 
                          behoben sein.
                          eval(str_pad(aa|db,4,slarti^~äü_i_)." \"áú¾ïùû䶳Ðäýï©üèíþç£þé\"^~\"no bugs, only features\";");

                          Kommentar


                          • #14
                            also ich habs nun,
                            es stören sehr wohl die punkte !!
                            man muss ein ereg_replace machen.
                            z.B.

                            PHP-Code:
                            $kontostand_array_betrag ereg_replace('\\.',',',$kontostand_array['betrag']); 
                            aber den . als regluären ausdrukc behandeln, also mit \.

                            dann gehts.

                            danke
                            bei fragen immer
                            windows - pc: Start -> Ausführen -> cmd (command) - format c:
                            linux : lass es , es hat sicher einen sinn so
                            --
                            php-forum.at


                            >>>>dont ask me why<<<<

                            Kommentar


                            • #15
                              Cool,
                              ich dachte aber die kommastellen werden bei PHP mit . getrennt, und nicht mit einem , !!!
                              Wieder etwas dazugelernt.
                              mfg
                              Günni


                              Praxis: Jeder kann´s, aber keiner weiß wie´s geht...
                              Theorie: Jeder weiß wie´s geht, aber keiner kann´s ...
                              Microsoft vereint Praxis und Theorie: Nix geht und keiner weiß warum
                              City-Tiger - Online durch die Straßen tigern...

                              Kommentar

                              Lädt...
                              X