Formatierung von Zahlen

  • Hey,


    ich bin gerade dabei mein Gold zu formatieren wie z.b. 1.000.000 = 1M


    Jetzt ist meine Frage wie kann ich es so darstellen das man Kommastellen darstellt? Es ist ja kein float, da meine Zahlen echt hochgehen und deswegen nutze ich INT64.

    Gibt es eine Möglichkeit nach der Zahl durch ein "Append" ein Komma einzufügen und dann die zwei Zahlen, die nach der 1 kommt von "1000000" anzuzeigen?




    :P

  • Hey Sleepy ,


    weil es bei Float mit der Zahl "999.999.995.904,0" endet^^

    Ich gehe bis zur Quadrillion dafür brauche ich INT64.
    Gibt es den andere Möglichkeit, mit so höhen zahlen zu arbeiten?

  • Integer heißt ja nun Ganzzahl. Int64 ist halt eine 64 Bit Ganzzahl.


    Ich habe noch gar nicht geschaut, wenn du so hohe Werte brauchst, gibt es in Unreal kein Double oder so?

    Aber ob du 32 Bit hast oder 64 Bit ist ein unterscheid du hast höhere Zahlen.
    Integer : 2147483647 Limit

    Float: 999999995904,0 Limit
    Integer64 : 9223372036854775807 Limit


    Verstehe nicht was du mit Double meinst^^

  • Ein Float belegt meines Wissens nach 4 Bytes, ein Double hingegen 8. Ein Float kann 6 bis 7 Dezimalstellen speichern, ein Double 15.


    Und afaik gibt es bei Blueprints keinen Double (keine Garantie!). Vielleicht kann man sich aber einen aus 2 Integern basteln, wobei einer die Vorkomma- der andere die Nachkommastellen darstellt.

  • Ein Float belegt meines Wissens nach 4 Bytes, ein Double hingegen 8. Ein Float kann 6 bis 7 Dezimalstellen speichern, ein Double 15.


    Und afaik gibt es bei Blueprints keinen Double (keine Garantie!). Vielleicht kann man sich aber einen aus 2 Integern basteln, wobei einer die Vorkomma- der andere die Nachkommastellen darstellt.

    Genau das meinte ich ja :)

    Das bedeutet ich musste bei 1M (1.000.000 / 1.000.000) rechnen und um zwei stellen nach dem Komma dazustellen, müsste ich nochmal (1.000.000 / 10.000) rechnen, den damit habe ich 100.
    Jetzt ist die Frage wie kann ich die 1 von der 100 ausblenden ^^

  • Es ist ein Sammelspiel, man fängt mit 1 Gold an und arbeitet sich hoch.
    Bin doch nicht der erste der mit hohen zahlen arbeitet ^^ Da muss es doch eine Lösung geben.

    Es gibt doch bestimmt eine Methode eine zahl(1000000) zu 1.000.000 Formatieren. Dann müsste ich doch einfach sagen statt " (1.000.000 / 1.000.000) " mache ich "(1.000.000 / 10.000)" und nach 2 zahlen einen Komma setzten.


    Dann wäre das 1,00M

  • Die meisten Sammelspiele dieser Art zeigen derartige Zahlen aber auch nicht an. Sie fassen dann in eine neue Kategorie zusammen.


    Zum Beispiel hast du erst 1-1000, dann 1 - 100k, später 1-100K, 1-100b usw.


    Ohne den Sourcecode eines solchen Spiels jetzt zu kennen, aber ich bezweifle sehr stark, dass da der reale Zahlenwert gespeichert wird. Denn je nachdem wie lange ein Spieler bei so einem Spiel am Ball bleibt, irgendwann würde es immer einen Überlauf geben.


    Ich zum Beispiel arbeite mich bei einem ähnlichen Spiel seit 1,5 Jahren hoch, jedes Mal, wenn ich auf Klo sitze, und glaube mir, in meinem Alter hat man eine schwache Blase. Somit dürfte dann das Spiel schon gar nicht mehr starten.


    Ich vermute mal, dass es eher wie das Erreichen eines neuen Levels gehandhabt wird.


    Also, dass da eine Kategorie nach der anderen freigeschaltet wird und dementsprechend auch niedrige Werte einfach mal anders verwurstet werden.


    Alternativ kannst du auch auf eine C++ Routine zurückgreifen, denn dort gibt es double.

  • Hey zusammen


    Es geht ja nur um die Darstellung, das kannst du mittels string formatieren wie auch immer du willst.

    Für ultra grosse zahlen kann man auch structs nutzen. Für Million, hunderter, zehntausender Stelle jeweils ein eintrag oder double in c++.


    Gruss

  • Nur die Frage ist wie formatiere ich es ? :P

  • Mittels der Kismet String Library. Du willst die "replace" node auf dem String nutzen, dort einfach , durch . ersetzen.

    In Blueprint einfach String eingeben und dann hast du eine riesen Auswahl :)


    Wüsste gar nicht, wie ich das mit Replace machen soll^^

    Meine Lösung:



    Weiß einer wieso ich immer das € zeichen sehe, obwohl ich "G" reinschreibe? Würde das Währungszeichen durch das M ersetzen, dann würde es passen, aber das Währungszeichen ändert sich nicht.


    Beispiel mit der zahl = 12100000

  • Kann ich nach 3 Zahlen Statt Punkt einen Komma setzen?

    Deine Frage war, wie man den Punkt durch ein Komma ersetzen kann, die Antwort ist die replace node.


    Weiß einer wieso ich immer das € zeichen sehe, obwohl ich "G" reinschreibe? Würde das Währungszeichen durch das M ersetzen, dann würde es passen, aber das Währungszeichen ändert sich nicht.


    G ist keine Währung.


    Je nach eingestellter Kultur werden zahlen in der Unreal Engine anderst formatiert. Du kannst das natürlich umgehen und einfach selber die Zahl in dreigruppen unterteilen, und dann dort dazwischen schreiben was immer du willst.


    Gruss

  • Die Umwandlung von einem Zahlensystem ins andere ist eigentlich recht einfach. So kann man zum Beispiel binär in Hexadezimal umwandeln, ect. Ich hatte dazu mal einen Beitrag geschrieben. Mit diesem System ist es quasi möglich, beliebig große Zahlen dazustellen:

    RE: Hohe Zahlen mit Float/Int

    Und Nachkommastellen können einfach z.B. die ersten beiden Indicies sein.

  • Ok danke habs nun verstanden :D und @Tankbuster das ist ja sehr komplex, denke nicht das ich das so lösen werde ;) Danke euch für die hilfe