Zahl besser lesbar machen

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,


    Kann mir jemand bitte ein stock scripten das eine zahl(z.B. 7141515) in eine besser lesbare Zahl umwandelt(7.141.515)?
    Das ganze sollte strint(integer) heißen und einen string returnen.


    Ich hoffe mir kann jemand helfen.
    MFG MrTheMake.

  • hier ungetestet, kann sehr gut sein, dass momentan noch nicht alles so funkt wie gewünscht...
    stock LesbareZahl(Zahl)
    {
    new id=0;
    new str[30];
    new string[40];
    format(str,sizeof(str),"%d",Zahl);
    for(new i=strlen(str); i>=0;i--)
    {
    id++;
    format(string,sizeof(string),"%c%s",str[i],string);
    if(floatround(id/3, floatround_floor) == floatround(id/3, floatround_ceil) && i!=0)
    {
    format(string,sizeof(string),".%s",string);
    }
    }
    return string;
    }

  • Recht unoptimiert auf die schnelle geschrieben sollte aber funktionieren
    stock inspoints(num)
    {
    new str[20];
    valstr(str,num);
    new len = strlen(str);
    if(len > 2) strins(str,".",len-3);
    if(len > 6) strins(str,".",len-6);
    if(len > 9) strins(str,".",len-9);
    if(len > 12) strins(str,".",len-12);
    return str;
    }


    //Edit Sniper deins fügt nach jeder zahl einen Punkt ein :D

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • //Edit Sniper deins fügt nach jeder zahl einen Punkt ein :D


    ehm, rein tehoretisch nicht.
    floatround(id/3, floatround_floor) == floatround(id/3, floatround_ceil)
    die momentane Zahl /3 auf und abgerundet vergleichen.
    also wenn wir 3 oder 6 etc haben kommt eine glatte zahlraus und egal ob wir auf oder abrunden 3/3 bleibt immer 1
    jedoch wenn wir nun eine nicht durch 3 teilbare zahl haben passiert folgendes:
    4/3 = 1,333...
    aufgerundet 2
    abgerundet 1
    2!=1
    also wird kein Punkt eingefügt.

  • Dacht ich auch, aber als ich es getestet hab, kam das dabei raus


    1.0.0.0.
    und so hab ich es verwendet
    print(LesbareZahl(1000));

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • xD
    So, jetzt geht mein code, habe die fehlerhafte stelle makiert...
    stock LesbareZahl(Zahl)
    {
    new id=0;
    new str[30];
    new string[40];
    format(str,sizeof(str),"%d",Zahl);
    for(new i=strlen(str)-1; i>=0;i--)
    {
    id++;
    format(string,sizeof(string),"%c%s",str[i],string);
    new Float:Rech=float(id)/float(3);// hier dran lags, hat iwie vorher immerschon abgerundet...
    //printf("%f",Rech);
    //printf("floatround((%d/3)[%f], floatround_floor)[%d] == [%d]floatround((%d/3)[%f], floatround_ceil) && i(%d)!=0",id,Rech, floatround(Rech, floatround_floor),floatround(Rech, floatround_ceil) ,id,Rech,i);
    if(floatround(Rech, floatround_floor) == floatround(Rech, floatround_ceil) && i!=0)
    {
    format(string,sizeof(string),".%s",string);
    }
    }
    return string;
    }