kostenloser Webspace werbefrei: lima-city


Variablen: Nachkomma Nullen....

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    verbrechergame

    verbrechergame hat kostenlosen Webspace.

    Hi Leute,
    ich bin noch ein Anfänger in PHP und hab da mal 2 Fragen:
    Ich habe die Variable $startgeld = 20
    Das sollen 20€ sein! Dann habe ich ein Objekt, dass 20 cent kostet! $objekt = 0.20
    $startgeld - $objekt
    so nun bekomme ich aber nicht 19.80 € raus, sondern 19.8 ! Wie schaffe ich es, dass er die Null nach dem Komma nicht weglässt???

    2. Wenn ich jetzt ein Objekt gekauft habe, dann soll das Startgeld jetzt nicht mehr 20€ sein sondern natürlich nurnoch 19,80€! das heißt, wenn ich noch ein anderes objekt kaufe für 30 cent, dann rechnet er ja 20-0.3! Ich hoff man versteht mich^^
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. versuchs mal so:

    //Problem 1 und 2
    $ergebnis = round($startgeld-$objekt, 2);
    echo "<br /> $ergebnis <br />";
    
    //Problem 2 (wenn ichs richtig verstanden habe^^)
    
    $startgeld = $ergebnis; // jetzt ist startgeld = 19.80
    $ergebnis = round($startgeld-0.30, 2);
    echo "<br /> $ergebnis <br />";


    Zu Problem 2:

    Du musst halt das Ergebnis der Letzten Rechnung wieder als Startgeld festlegen, also iwo zwischenspeichern, weiß ja nicht ob du mit Datenbanken oder so arbeitest...



    Beitrag geändert: 15.9.2008 16:15:29 von myhead
  4. chaosinternet

    chaosinternet hat kostenlosen Webspace.

    Ähm durch round() bekommst du keine andere Ausgabe... round ändert die Zahl an sich, indem es halt rundet.

    Falls du als zum Bsp. mit der Zahl 19.7354543735 rechnen möchtest, allerdings nur eine Ausgabe von 2 Nachkommastellen möchtest mußt du das mit sprintf() bzw. printf() ausgeben.

    <?
    echo sprintf('%0.2f', $ergebnis);    
    // oder
    printf('%0.2f', $ergebnis);
    ?>


    ... in der Variable steht also danach immernoch die Zahl mit all ihren Nachkommastellen ;-)

    Grüßle

    Edit:
    Jetzt hab ich´s doch glatt vergessen zu erklären... bei sprintf() gibt das %0.2f fir Formatierung an: 0 für mind. 1 Vorkommastelle und die 2 für 2 Nachkommastellen und das f für Float-Zahl ;-)

    Beitrag geändert: 15.9.2008 16:15:05 von chaosinternet
  5. xD jaaa stimmt...oh man das ist jetz aber peinlich :eek:

    chaosinternet schrieb:
    Ähm durch round() bekommst du keine andere Ausgabe... round ändert die Zahl an sich, indem es halt rundet.
    :eek:
  6. Autor dieses Themas

    verbrechergame

    verbrechergame hat kostenlosen Webspace.

    Das hier wird jetzt nicht als Spam gewertet *hoff*
    Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!

    Editiert: Ich weiß nicht was ich an der Fragestellung ändern soll aber oaay :)
    Was brauch ich dafür für eine Datenbank? Was bringt die, wie heißt die? Mehr erklärung dazu bitte!

    Editiert zum 2.
    Doch das wurde es :D


    Du musst halt das Ergebnis der Letzten Rechnung wieder als Startgeld festlegen, also iwo zwischenspeichern, weiß ja nicht ob du mit Datenbanken oder so arbeitest...





    Beitrag geändert: 15.9.2008 17:01:34 von verbrechergame
  7. chaosinternet

    chaosinternet hat kostenlosen Webspace.


    Das hier wird jetzt nicht als Spam gewertet *hoff*
    Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!


    Ich Profi, Datenbank hab ich auch! Bitte Abänderung der Fragestellung! ;-)

    Sorry, aber werde aus dem Kauderwelch nicht schlau... was möchtest du genau wissen? ...kannst dazu deinen Text hier drüber abändern mit den Button rechts ;-)

    Ich werde danach dann diesen Text halt editieren, wenn ich weiß was du willst.


    Edit:
    Es hat keiner etwas von einer Datenbank erzählt :-( Es wurde lediglich festgestellt, dass round() die Zahl an sich rundet, während printf() nur eine gewisse Anzahl an Nachkommastellen ausgibt, die Zahl an sich aber unangetastet belässt.
    (Doku sprintf() http://de2.php.net/manual/de/function.sprintf.php)

    Beispiel:
    <?php
    $zahl = 20.946465364;
    
    // die Zahl an sich wird gerundet - d.h. will man später 
    // von $gerundet 4 Nachkommastellen haben, sind diese zwangsweise Null
    $gerundet = round($zahl, 2);
    echo "Zahl gerundet: ".$gerundet."<br />";
    
    echo sprintf('Ausgabe bei gerundeter Zahl: %0.6f <br />', $gerundet);
    echo sprintf('Ausgabe bei orginal Zahl: %0.6f <br />', $zahl);
    ?>


    Zu deinem Problem 2:
    Dazu am Ende der Operation halt
    $startgeld = $startgeld - $object;
    rechnen.
    $startgeld muß dann natürlich noch dorthin gespeichert werden, wo du es hergeholt hast. ;-) Wenn dies eine Datenbank war mußt du halt ein Update der Datenbank durchführen - falls du mit Dateien arbeitest mußt du den Wert in die Datei schreiben.

    Ok neuen Thread bitte ;-) sonst blickt das keiner mehr.


    Beitrag geändert: 15.9.2008 17:05:33 von chaosinternet


  8. Das hier wird jetzt nicht als Spam gewertet *hoff*
    Also, ich Anfänger, Datenbank? Erklärung, bitte! Und das mit den Nachkommastellen funktioniert schonmal! Dankeschön!


    Ich Profi, Datenbank hab ich auch! Bitte Abänderung der Fragestellung! ;-)

    Sorry, aber werde aus dem Kauderwelch nicht schlau... was möchtest du genau wissen? ...kannst dazu deinen Text hier drüber abändern mit den Button rechts ;-)

    Ich werde danach dann diesen Text halt editieren, wenn ich weiß was du willst.


    Öhm, ich habs so verstanden.


    Ich bin PHP ein anfänger.
    Das Script das das mit den Nachkommastellen klären sollte, hat funktioniert.
    Brauche ich für dieses ganze Script auch eine Datenbank?


    Hoffe das das jetzt richtig übersetzt ist.

    "Erklärung bitte" - Wie denn wenn wir nicht wissen was dein ziel ist, oder willst du wissen ob man für das Komma Script ne Extra Datenbank braucht? Möchtest du erzielen das dass verbleibende Geld des Users abgespeichert wird? Wenn ja, dann geht das mit:

    - Datenbank (MySQL, hab davon noch nicht viel Ahnung)
    - fwrite (PHP)

    Wenns fwrite sein soll, dann:

    leg eine Datei an, meinetwegen "userkonto.txt"

    // Datei öffnen
        $datei = fopen("userkonto.txt", "a+");
    // In Datei schreiben   
      fwrite($datei, $geld);
    // Datei schließen
       $fclose ($datei);





    Beitrag geändert: 15.9.2008 17:03:45 von sy
  9. Autor dieses Themas

    verbrechergame

    verbrechergame hat kostenlosen Webspace.

    Moment, ich editier nicht noch ein drittes Mal^^
    Also:
    Das mit den 2 Nachkommastellen funktioniert alles! aber ich hatte ja noch ein anderes Problem! Und zwar mit dem, dass das ErgenisGeld beim nächsten Kauf wieder das Startgeld sein soll (nicht 20€ sondern nur noch 19.80€) ! Und oben wurde da was mit Datenbank erwähnt! und ich möchte jetzt wissen, was die datenbaknk bringt und die datenbank mal erklärt haben! Dankeschön!


    Beitrag geändert: 15.9.2008 17:10:46 von verbrechergame
  10. chaosinternet

    chaosinternet hat kostenlosen Webspace.

    Ok ich hab das in meinem ersten Post nicht wirklich gescheckt, dass da auch etwas mit einer Datenbank kam ;-) (Asche auf mein Haupt)

    Du holst doch irgendwoher diesen "Startwert" für jeden User? Oder hast du den Startwert global für alle gesetzt? ...das geht natürlich nicht ganz, denn du willst ja später die Nutzer unterscheiden.

    Aus diesem Grund verwendet man entweder eine Datenbank, in der die Restgeldbestände pro User drin stehen oder eine Datei in der pro User die Restbestände drin stehen.
    Je nach Aufwand deines Projekts hat das eine vor und Nachteile.
    Wenn du das ganze also nur für 3 Leute machst und das auch nur der einzigste Wert ist den du abspeichern mußt, ist evtl. eine Datei besser.

    Hingegen, wenn du das für 10 Leute und mehr machst und evtl. auch noch die Leute persönlich mit Namen ansprechen willst, ist eine Datenbank besser geeignet.
    Dort kannst du nämlich viele Daten zu den Nutzern speichern, die du dann auf deiner Seite verwenden kannst. Dazu wird eine Verbindung zur (MySQL-) Datenbank aufgebaut und die entsprechenden Daten durch SQL-Befehle abgerufen.
    (siehe Befehle: http://de2.php.net/manual/de/book.mysql.php)

    Beitrag geändert: 15.9.2008 17:26:25 von chaosinternet

  11. Und oben wurde da was mit Datenbank erwähnt! und ich möchte jetzt wissen, was die datenbaknk bringt und die datenbank mal erklärt haben! Dankeschön!


    *Durchatme*

    Was bringt die Datenbank?

    Die DB ist ein mittel um Daten in ihn zu speichern. Das ganze geht auch mit fwrite.
    (In einem PHP Tut hab ich mal gelesen DB wäre die "schickere" Methode ;))

    Was heißt hier ich will die Datenbank erklärt haben?!

    Such dir ein PHP und MySQL Tutorial und schau dann dort... tz tz tz... ;)
    Eine datenbank, is wie gesagt, ein Ort an den man Daten ablegt und speichert.

    Um das mal veranschaulich zu machen:

    http://tut.php-q.net/mysql.html

    Noch irgendwelche Fragen?.....



    Ok ich hab das in meinem ersten Post nicht wirklich gescheckt, dass da auch etwas mit einer Datenbank kam ;-) (Asche auf mein Haupt)


    *Auch Asche auf mein Haupt*


    Beitrag geändert: 15.9.2008 17:28:41 von sy
  12. Autor dieses Themas

    verbrechergame

    verbrechergame hat kostenlosen Webspace.

    Also:
    Mein Freund hat mich hier her geholt und gesagt ich brauch das MySQL-teil
    habs mir geholt, aber ich hatte nicht gecheckt, dass das mit datenbank gemeint war! Aber danke, alles funktioniert erstmal soweit ich das haben möcht!
  13. meinst du Datenbank unter Auktionen oder PHPMyAdmin :confused:
  14. Autor dieses Themas

    verbrechergame

    verbrechergame hat kostenlosen Webspace.

    Erst ersteigert (auktionen), aber unter phpmyAdmin mach ich das doch oder nicht?
  15. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!