Wie berechnen?

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 ich möchte eine anzeige fürs Handy system machen wo man sieht wie viel Sms Speicher belegt ist ich habe einen string der 650 zeichen groß ist wie mach ich das ich zähle ihn mit strlen und habe dann eine varible mit der gezählten summe nur ich kriege dann immer durch die rechnung : 650/100*strlensumme und da kommt dann immer viel zu viel % raus was mach ich falsch?


    MFG

  • Also man hat pro Spieler einen 650 Zeichen langen String, in dem ALLE SMS gespeichert werden,
    und du willst die Prozentzahl ausrechnen ?


    Grundsätzlich rechnet man Prozente übrigens so aus (Klammern sind wurscht):
    (Anteil / Gesamtmenge) * 100


    Bei dir also
    ( strlen(string) / 650) * 100

  • // edit so jetzt näher gekommen


    ich rechne jetzt so (650/100)strlen(...)


    aber ingame ist es 0 oder als Float 0.000000


    hier mal mein teil: new fertigsms[650];
    format(fertigsms,sizeof(fertigsms),"Zurück\nAnrufen\nSms Schreiben\nPosteingang\n%s",string);
    new Float:voll2=6/strlen(fertigsms);
    new volltxt[64];
    voll2*=100;
    format(volltxt,sizeof(volltxt),"Vollfertig prozent: %f%.",voll2);



    MFG

    2 Mal editiert, zuletzt von janpplayer ()

  • Trooper hat es doch schon gesagt, warum liest du nicht einfach mal, was man dir antwortet?


    Prozentberechnung = (Anteil / Gesamtmenge) * 100, fertig.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Geht trotzdem nicht wir immer 0.000000 angezeigt und ich machs ja so hab es jetzt so: new Float:voll2=6/strlen(fertigsms);
    new volltxt[64];
    voll2*=100;
    format(volltxt,sizeof(volltxt),"Vollfertig prozent: %f%.",voll2);



    MFG

  • Wofür das %.? oO


    Edit: Achso, jetzt versteh ichs. Du musst %%. machen. %% Inserts the literal '%'


    Edit: Und mach dir deine Rechnung nicht so umständlich...


    new Float:voll2; voll2 = (6 / strlen(fertigsms)) * 100;

    Edit by DMA://
    Ihr könnt eure Klammern übrigens weglassen, schadet keinem, denn wir wissen ja alle: "Punkt vor Strich!". (Man muss den Divisions-Operator allerdings dann als : sehen).
    Dann sieht ist's noch weniger umständlich aus.

    new Float:voll2 = 6 / strlen(fertigsms) * 100;


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • new Float:voll2;
    voll2 = (6 / strlen(fertigsms)) * 100;
    new volltxt[64];
    format(volltxt,sizeof(volltxt),"Vollfertig prozent: %f.",voll2);
    print(volltxt);


    leider immernoch nit es steht im print: Vollfertig prozent: 0.000000.


    MFG

  • Dann lass dir doch mal strlen(fertigsms) als Clientmessage ausgeben.
    Denn ich habe die Vermutung, dass fertigsms nichts beinhaltet.
    Und wie wir ja alle wissen: Durch 0 wird nicht geteilt!


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Ah, ich glaub das liegt an dem "." (Punkt) nach %f, weil wenn ich mich recht entsinne, kannst du mit z.B. %f.1 angeben, dass nur die erste Nachkommastelle angezeigt wird.
    Mach den mal weg und probier.


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'

  • Wies scheint, musst du die Integer zahlen erst zu Floats konvertieren (Habs grad bei mir ausprobiert)


    new Float:voll2;
    new minZahl[2], maxZahl[3];
    format(minZahl, sizeOf(minZahl), "%i", 6);
    format(maxZahl, sizeOf(maxZahl), "%i", strlen(fertigsms));
    voll2 = floatstr(minZahl) / floatstr(maxZahl) * 100;


    Mein CS:GO Server: 62.75.168.39:27016


    Ich bin so hungrig, dass ich vor lauter Durst nicht weiß, was ich rauchen soll - so müde bin ich!
    Freedom is just another word for 'Nothing left to lose'