Euro,Cent System [Frage]

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Hallo Community,
    ich habe eine Frage, die ich gerne beantwortet haben möchte: Sollte ich ein Euro,Cent System lieber mit zwei Variablen, also pEuro pCent, schreiben oder reicht dort ein Float:pGeld vollkommen und würde mir übermäßige Arbeit wegschaffen? Viel dazu ist nicht mehr zu sagen.


    Ich wünsche noch einen schönen Tag.


    Mit freundlichen Grüßen
    Adrian Rodriguez

  • Die Qual der Wahl liegt bei dir.


    Leider...


    Bin schon seid heute morgen am überlegen, aber ich weiss leider nicht, was genau ich nehmen soll, weswegen ich nun hier frage :D


    Edit: Ich entscheide mich für die Floats, da es jetzt zu viel arbeit wäre alles in zwei Variablen zu umzuschreiben.
    Nun habe ich aber ein Problem, denn wenn ich 10 cent vergebe, bekommt der andere 10 cent, aber mir werden 13 cent abgezogen

  • Ich würde dir raten, es mit 2 Integern zu machen, da es bei den Floats, wie du bereits gehört und gesehen hast, zu ungenau ist..


    Und das Ganze mit 2 Integern zu berechnen ist nun auch nicht so schwer.. Mach dir einfach eine Funktion, beispielsweise "GiveCash", womit du dem Spieler immer das Geld gibst, und in der Funktion wird das Geld immer umberechnet... Variable Cent >= 100 ? 》Euro ++ & Cent - 100

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • Zeig doch mal den Code mit den 10 und 13 Cents. Ich glaube das nicht so ganz, so stark ungenau sind die Floats auch nicht, das sind ja 30%. Die Abweichungen liegen eigentlich im Promille Bereich.


    Ich persönlich würde es nicht mit zwei Integers machen, nur so nebenbei.

  • Rechne immer erst das Geld in Floats aus, addiere oder subtrahiere es dann erst.
    So kannst du es immer richtig konvertieren, bevor du rechnen lässt, damit es mit deinen zwei Variablen übereinstimmt.
    In Wirklichkeit wird ja auch immer auf einen Cent auf oder abgerundet (siehe Tankstelle).
    new Float:bla = 2.354646, string[30];
    format(string, 30, "%.2f", bla);
    printf("%s",string);

    -> 2.35


    L.G.


  • if(sscanf(params, "uf", pID, _money))return 1;
    //Abfragen ob Spieler Online ist und ob der Spieler genug Geld hat...
    GiveMoney(playerid, -_money);
    GiveMoney(pID, _money);
    format(_string, sizeof _string, "Du hast %s %.2f Euro gegeben", PlayerInfo[pID][pRPName], _money);
    SendClientMessage(playerid, COLOR_WHITE, _string);


    stock GiveMoney(playerid, Float:money, type = 0) {
    switch(type) {
    case 0: {
    PlayerInfo[playerid][pGeld] = floatadd(PlayerInfo[playerid][pGeld], money);
    }
    case 1: {
    PlayerInfo[playerid][pBank] = floatadd(PlayerInfo[playerid][pBank], money);
    }
    }
    return 1;
    }

  • Danke Jeffry:! Man müsste mal nen Lob an dich schreiben :whistling:
    Hab den Fehler gefunden, er war im GiveMoney. Funktioniert wunderbar mit Floats. Zwei Variablen = Scheiße rechnen und umständliches umschreiben, wenn man schon relativ viel hat mit Geld. Floats != ungenau, da man ja eh nicht 1 Million aufeinmal vergeben kann z.B. und in dem Bereich ist es nicht ungenau, Floats = einfacher rechnen: floatsub floatadd floatdiv floatmul etc. ...


    Kleiner Edit: Ich habe 9999,90 vergeben, ungenauigkeit: 9999.9004