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.
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
Schau dir das hier ma an: formatnumber.inc
//Edit Sniper deins fügt nach jeder zahl einen Punkt ein
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));
Danke @BlackAce dein code funktioniert(bisauf das ich die 2 durhc eine 3 ersetzen musste)
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;
}