Tausendertrennzeichen

  • GM 7
  • Tausendertrennzeichen

    hi leute,der gamemaker schreibt ja alle zahlen,egal wie groß sie sind, immer so unübersichtlich.ich möchte gerne,dass er zum beispiel so 154.795.319.683 schreibt und nicht so 154795319683.geht das?

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

  • Du kannst die Zahl ja in einen String umwandeln, und (von hinten angefangen) nach jedem Zeichen einen Punkt
    schreiben lassen. Allerdings kannst du den String dann nicht mehr direkt in einer Rechnung benutzen.
    Gruß, Spellmaker

    Edit: Hab mal ein kleines Skript zusammengewurstet
    Edit2: Wenn die Zahl schon ein String ist, dann kann man die Umwandlung im Skript rausnehmen
    Spoiler anzeigen

    GML-Quellcode

    1. //fügt in die Zahl argument0 Punkte ein
    2. var str,i;
    3. str=string(argument0);
    4. for (i=string_length(str)-2;i>0;i-=3){
    5. str=string_insert(".",str,i);
    6. }
    7. return str;
    ___________________________________________________________
    Beware of wild pointers
    ______Hinweis für Allergiker: Kann Spuren von Ironie enthalten_____

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

  • und was genau muss ich da dann machen?

    edit:ohh sorry,hab das übersehen
    edit2:wo muss denn das rein(event?) und stimmt das so,weil es geht nicht:

    GML-Quellcode

    1. var str,i;
    2. str=string(score);
    3. for (i=string_length(str)-2;i>0;i-=3){
    4. str=string_insert(".",str,i);
    5. }
    6. return str;

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

  • script_execute(...) is eigtl nur ein verweis auf die "echten zeilen" code die das programm ausführen soll.

    stell dir vor:

    für irgendetwas (rein fiktives abstraktes beispiel), brauchst du verschiedene anweisungen.

    zB a, b und c.

    nun mussd du irgendetwas kompliziertes machen und hast diese abfolge der anweisungen.(stell dir außerdem vor "a" wäre iene lange anweisung aus mehreren befehlen)

    aaaaaabaaaaaacaaaaaaa...

    warum dann "a" immer wieder hinschreiben?

    das kostet ne menge zeilen.

    bei "echten" programmiersprachen heißt das dann "procedure" oder "function"

    hier heißt es eben script.

    dann hast du nicht tonnenweise code-müll sondern rufst denselben kompakten code-müll von einem anderen teil des codes auf.

    man kann also sagen, das script brauchst du garnicht, du kannsd einfach die zeilen aus dem script mit in den von dir verwendeten code-teil mit reinkopieren, aber das machts meist sher unübersichtlich, weshalb man scripts verwenden sollte, aber nicht muss !
  • Du könntest es auch bei "draw_text" mit Punkten anzeigen lassen, indem du es aufteilst.
    z.B. so.
    a[0]=floor(zahl/1000);
    a[1]=floor(zahl/1000000);
    draw_text(x,y,string(a[1])+"."+string(a[0])+"."+string(zahl-a[0]*1000-a[1]*1000000));

    Ein wenig komplizierter, aber es dürfte funktionieren... und es bedarf keiner komplexen scripte ;)
    Du solltest dabei aber vorher schauen, wie groß die Zahl ist.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • also ich würdes ja einfach so machen.

    str='';

    for (i=string_length(string(score));i>0;i-=1) // von hinten nach vorne, da dann unnötig wöäre erst zu prüfen wie lang die zahl ist

    {

    if (string_length(score)-i)mod(3) = 0 // "vor jeder 4ten" zahl (= nach jeder dritten)

    str='.'+str;

    str=str+string_char_at(score,i)

    }

    die schleife liest den string(score) von hinten ein und schiebt ihn vorne in einen neuen string, wird also quasi "kopiert", gelesen und geschrieben, dann nur noch die "." einfügen, nicht getestetm soltle aber gehn und ist sehr simpel
  • Dann muss er es zum Rechnen aber jedes mal umwandeln, so wie ich es mache, bleibt die Zahl unverändert...
    Ok, er kann sie natürlich in nen String umwandeln und in einer seperaten Variable speichern.
    So far, Schattenphoenix~
    _____________________________________________________________________________
    "Who needs a stairway to heaven...
    If there is an elevator to hell... ?
    "
    - Vergessen
    "Auch ein perfektes Chaos ist etwas vollkommenes."
    - Jean Genet
  • Ich weiß, ein nicht sonderlich konstruktiver Beitrag, aber ich schlage vor den Thread umzubenennen. Diese Punkte alle drei Ziffern in "großen" Zahlen nennt man meines Wissens "Tausendertrennzeichen". Der aktuelle Threadname ist unglaublich verwirrend (vor allem hat der ewig lange und wirre Zahlenwert garkeine Bedeutung für das Problem) und das Stichwort "Tausendertrennzeichen" könnte Usern mit einem ähnlichen Problem in Zukunft dabei helfen auf diesen Thread hier zu stoßen. o.o
  • dank dem example von J@kob funktioniert es jetz,auch wenn ich es nicht verstanden habe,danke an alle anderen auch

    edit:sorry aber es funktioniert doch nicht so perfekt,weil wenn die zahl nur 3 oder 6 ziffern hat,steht da dann auch ein punkt davor,obwohl das nicht sein sollte.
  • so mein code hatte paar fehler, zB score string(score) und so, aber nun funktioniert er, die puonktierung ist korrekt

    str='';
    for (i=string_length(string(score));i>0;i-=1)
    {
    d=string_length(string(score))-i;
    if ((d)mod(3)=0)and(d!=0)
    str='.'+str;
    str=string_char_at(string(score),i)+str;
    }



    str beinhaltet dann den gewünschten string
  • es scahdet nie wenn man zu viel namen in den credits hat xD also alle mal reinschreiben, aber genrell isses mir egal ob ich in den credits steh, wenn ichs unbedingt will dann meld ich mich xD schreib so viele wie möglich rein ;P
  • Benutzer online 1

    1 Besucher