Kommastelle bei Float.

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
  • Ich wollte euch fragen wie man eine Kommastelle in einem Float einbaut bzw einem Textdraw....für Ratio


    Es soll dann zb so aussehen:


    1.3
    2.5


    oder so
    Momentan wird es aber nur als volle stelle und gerundet angezeigt....


    new dms[100];
    ratio[playerid] = kills[playerid]/deaths[playerid];
    format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%d",kills[playerid],deaths[playerid],floatround(ratio[playerid]));
    TextDrawSetString(dmstats[playerid],dms);


    Danke jetz schonmal für eure Hilfe

  • format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%f",kills[playerid],deaths[playerid],ratio[playerid]);

  • new Float:lawl = 3.123456;
    printf("%.2f", lawl);

    Output ist dann 3.12 ;)

  • Schonmal danke an dir Trooper^^ jetz gehen die Kommazahlen.


    Bloß der Wert ist immernoch gerundet


    Beispiel grad getestet.


    Kills: 5
    Deaths: 4
    Ratio:1.00 << gerundet


    Das Ratio wird erechnet aus Kills/Deaths
    5 / 4 = 1.25


    Ich will jetzt das es so angezeigt wird:


    Kills: 5
    Deaths: 4
    Ratio: 1.25


    Wie mache ich das?

  • Er möchte nur ein punkt dahinter
    new Float:lawl = 3.123456;
    printf("%.1f", lawl);

  • do.de - Domain-Offensive - Domains für alle und zu super Preisen
  • format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%d",kills[playerid],deaths[playerid],floatround(ratio[playerid]));


    So stands ganz oben, sry^^


    Musst ratio als Float definieren, dann sollte es klappen ;)


    MFG, Robdeflop®

  • new Float:ratio = (kill/deaths);
    format(dms,sizeof(dms),"Ratio: ~r~%.2f",ratio));
    Also da müsste ja eigentlich nichts gerundet werden (wenn man kein floatround verwendet)

  • if(deaths[playerid] == 0)ratio[playerid] = float(kills[playerid]);
    else ratio[playerid] = floatdiv(kills[playerid], deaths[playerid]);
    format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%.2f",kills[playerid],deaths[playerid],ratio[playerid]);
    TextDrawSetString(dmstats[playerid],dms);


    so müsste es klappen^^

  • also...


    die Definierungen außerhalb eines Callbacks:


    new kills[MAX_PLAYERS];
    new deaths[MAX_PLAYERS];
    new Float:ratio[MAX_PLAYERS];


    Unter OnPlayerDeath:


    deaths[playerid] ++;
    if(indm[playerid] == 1)
    {
    new dms[100];
    ratio[playerid] = kills[playerid]/deaths[playerid];
    format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%.2f",kills[playerid],deaths[playerid],ratio[playerid]);
    TextDrawSetString(dmstats[playerid],dms);
    }
    else
    {
    new dms[100];
    ratio[playerid] = kills[playerid]/deaths[playerid];
    format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%.2f",kills[playerid],deaths[playerid],ratio[playerid]);
    TextDrawSetString(dmstats[playerid],dms);
    }
    if(killerid != INVALID_PLAYER_ID)
    {
    new dms[100];
    kills[killerid]++;
    ratio[killerid] = kills[killerid]/deaths[killerid];
    format(dms,sizeof(dms),"~g~Kills: ~r~%d~n~~y~Deaths: ~r~%d~n~~p~Ratio: ~r~%.2f",kills[killerid],deaths[killerid],ratio[killerid]);
    TextDrawSetString(dmstats[killerid],dms);
    }


    Mehr bräuchtest du eig. net