Geld als Foat oder doch ehr als Int

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Geld als Foat oder doch ehr als Int

    Hey,
    Ich habe zurzeit mal eine frage wegen dem Geld System.

    Es geht darum das Geld als Float: also 52.84$ zu machen oder einfach als Int. 52$.
    Weil das Problem ist dass beim Addieren/Subtrahieren/Multiplizieren/Dividieren bei der Float manchmal ungenaue dinge rauskommen.
    Gibt es eine möglichkeit das zu ändern oder wäre ein Int besser.

    Oder doch einfach 2 Int nehmen für Euro und Cent ?
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn
  • Was genau ist da einfacher als mit einen Float ?
    Man kann doch ein Float genauso + , - , / , * nehmen und muss es da lediglich mit einem Wert machen statt mit 2 Integers.
    Auch spart man sich damit das Umrechnen( Cent -> €) wenn man mehr als 100 Cent zum Beispiel im Integer 1 hat. (ist jetzt kein Aufwand klar, aber Float macht das Automatisch.)

    Genauso Geld abfragen sind lediglich mit einer Abfrage möglich bei Float. ( if(Wert >= 34.50)
    Bei Int müsstest du ggf. Nach dem € Wert und Cent wert fragen.

    Und anzeigen lässt sich das ganze Flexibel mit "%.2f". (2f = 2 Stellen, 3 ..... nach dem Komma)
    Ich bin zwar schon lange raus aus SAMP doch sehe ich(wenn ich mich nicht irre) nicht das 2 Integers besser als 1 Float sind bei diesen zumindest.

    Udo Lindenberg schrieb:

    Wir haben doch nicht die Mauer eingerissen.
    Damit die jetzt schon wieder neue bauen.....

    ....Ich hör John Lennon singen „give peace a Chance“.

    „Auge um Auge - und die ganze Welt wird blind sein.“
    - Mahatma Gandhi
  • Ja das weiß ich @Dog:

    Aber ich bin der meinung dass es bei Float Werten bei + - * / ein bisschen immer ein bisschen höher oder kam mir nur das so vor ?



    Quellcode

    1. Tanki[playerid][t_tankp] = floatadd(Tanki[playerid][t_tankp], floatmul(0.01, bizInfo[Tanki[playerid][t_tanki]][biz_dieselp]));
    Da ist es z.b bei 1L dass ich z.b 14.52$ pro Liter einstelle und bei 14:68 oder sowas Lande obwohl ich genau 1L habe.
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn

    Beitrag von reaL. ()

    Dieser Beitrag wurde vom Autor gelöscht ().
  • Hier ein bsp

    Ich gebe beim Geld setzen 76.34 ein und es kommt

    Quellcode

    1. Du hast dein Geld auf 76.33$ gesetzt.


    Quellcode

    1. Der Print: [14:09:04] 55.51

    Quellcode

    1. case DIALOG_PBEARBEITEN_MONEY_SETZEN:
    2. {
    3. if(!response) return 1;
    4. new pID = GetPVarInt(playerid, "Editpid"), Float:money = floatstr(inputtext), string[128];
    5. if(pID == playerid)
    6. {
    7. pInfo[playerid][pMoney] = floatadd(0, money);
    8. SetPlayerMoney(playerid, pInfo[playerid][pMoney]);
    9. format(string, sizeof(string), "Du hast dein Geld auf %0.2f$ gesetzt.",money);
    10. SendClientMessage(playerid, COLOR_RED, string);
    11. return 1;
    12. }
    Alles anzeigen

    Quellcode

    1. stock SetPlayerMoney(playerid, Float:Money)
    2. {
    3. new mon, str, Geldinfo[2][20], string[30];
    4. mon = GetPlayerMoney(playerid);
    5. GivePlayerMoney(playerid, -mon);
    6. format(string, sizeof(string), "%f",Money);
    7. split(string,Geldinfo,'.');
    8. printf("%d.%d", Geldinfo[0], Geldinfo[1]);
    9. // GivePlayerMoney(playerid, Money);
    10. return 1;
    11. }
    Alles anzeigen
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn
  • In SetPlayerMoney setzt du %d.%d.
    Also kein Float sondern Integer (jaja %d ihr schlaumeier, ist egal jetzt)

    76.34 im Integer sind auch 76.33 wenn es Float ist. Denn hier wird gerundet, ab 5 wird aufgerundet, unter 5 wird runtergerundet. 2 Klasse Grundschule.

    Für die falschen Werte bist du also selbst schuld.

    Godfather-Scripts erfolgreicher Server, machen deinen, nicht auch zu einem.

    #bratanichmachnurnochselfmade
    #nurnochselfmade #nurnochselfmade

    Beitrag von Kaliber ()

    Dieser Beitrag wurde vom Autor aus folgendem Grund gelöscht: Ach keine Lust https://github.com/compuphase/pawn/blob/master/doc/Floating_Point_Support.pdf ().
  • Ja das meine ich ja, deswegen meinte ich ob man das ändern kann oder ob man es nur durch Euro und Cent Varriable machen kann am besten.

    @Talykos:
    Das mit dem aufrunden weiß ich.
    Aber das beim %d da will ich ja nur die 76.34 Splitten damit ich einmal die 76 habe und einmal 34 habe.

    @Kaliber:
    Also was muss ich verändern ?
    Verstehe das nicht so Ganz ;)
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von reaL. ()

  • In anderen Sprachen macht es Sinn hier double/float Werte zu nehmen.

    In Pawn meiner Ansicht nach nicht.

    Es treten einfach zu starke Rundungsfehler auf, die man nicht so leicht beheben kann.

    Ich empfehle dir daher wirklich 2 Integer zu nehmen.

    //Edit:

    PS: Gibt dafür bereits auch schon fertige Systeme: forum.sa-mp.com/showthread.php?t=276588

    Einfach mal googlen :)


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. X/
  • @Kaliber:
    Genau das ist das was ich gemeint habe.
    Deswegen habe ich Ja gefragt :)


    Eine frage ich habe es nun als Varriable und beim Tanken ein Problem.
    Ich geben pro Aufruf des Tanktimers 0.01 zum Tankhinzu muss also den Preis /100 Rechnen aber das geht nicht.
    Habe es im Beispiel mit 125$ gemacht als "Dieselp" und muss 1.25l Tanken um auf 125$ zu kommen aber eigentlich muss doch bei 1L 125$ sein oder nicht ?

    Quellcode

    1. Tanki[playerid][t_tankp] += bizInfo[Tanki[playerid][t_tanki]][biz_dieselp]/100;
    youtube.com/channel/UC5TZUUd86…AZ4dYQ?view_as=subscriber

    Biete Scripting Service an bei Interesse ->Pn
    Verkaufe Selfmade Script bei Interesse -> Pn

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von reaL. ()