Neuer Zahlentyp



  • Hallo!

    Ich möchte einen Datentyp haben, bei dem genau festgelegt ist, wie viele Stellen vor, bzw. hinter dem Komma stehen. Wie mache ich das am besten?



  • user0 schrieb:

    Hallo!

    Ich möchte einen Datentyp haben, bei dem genau festgelegt ist, wie viele Stellen vor, bzw. hinter dem Komma stehen. Wie mache ich das am besten?

    Hallo,
    Wie meinst du das denn? Bei float/double/etc. ist die Genauigkeit doch festgeschrieben 😕
    Reicht dir selbige nicht? Dann nimm gmp oder schreib dir eine eigene Klasse mit einer größeren Genauigkeit als sie die pods bieten. :).

    Gruß Caipi



  • Ich dachte bei float verschiebt sich das Komma nach hinten, wenn die Zahl größer wird ("Gleitkomma").
    In Delphi kann man schreiben

    type neueZahl = 1..4;
    

    Geht soetwas ähnliches auch in C++?



  • user0 schrieb:

    Ich dachte bei float verschiebt sich das Komma nach hinten, wenn die Zahl größer wird ("Gleitkomma").
    In Delphi kann man schreiben

    type neueZahl = 1..4;
    

    Geht soetwas ähnliches auch in C++?

    Nein. Das macht imo auch net so viel Sinn.

    Gruß



  • Stimmt. 😃

    Ich will nur wissen, wie mann beispielsweise einen Datentyp definiert, der genau 4 Stellen vor und genau drei Stellen hinter dem Komma besitzt.



  • Du könntest höchstens sagen, du teilst einen 32-Bit Integer in n Vorkommabits und 32-n Nachkommabits ein.

    Wenn du Festkomma haben willst musst du aber erstens bedenken, dass du (auf einfache Weise) nur die binären Nach- und Vorkommastellen festlegen kannst (IIRC 2n-1 und 2n-32-1) und zweitens die Länge der Integer in C++ nicht vorgegeben ist (wo man sich allerdings behelfen kann).

    Ein Vorzeichenbit könntest du auch einplanen.



  • Ok, danke. Ich werd's mal so probieren.



  • Aber bitte sauber in Klassen gekapselt und mit Operatoren versehen (am besten Boost.Operators) 😉



  • Wie wäre es mit Procent oder Promille? 100% = 1.00



  • user0 schrieb:

    Ich dachte bei float verschiebt sich das Komma nach hinten, wenn die Zahl größer wird ("Gleitkomma").[/code]
    Geht soetwas ähnliches auch in C++?

    gleitkomma bedeutet tatsächlich, daß sich die position des kommas verschiebt. die "kommaposition" wird bei fließkommazahlen im exponenten gespeichert. die anzahl der gültigen (binär-)stellen ist jedoch vorgegeben.

    user0 schrieb:

    In Delphi kann man schreiben

    type neueZahl = 1..4;
    

    unterbereichstypen kann man in c/c++ leider nicht deklarieren. überhaupt ist das typenkonzept in c/c++ ganz anders und viel maschinennäher als in delphi.

    zur eigentlichen frage: man kann in c++ schon eine festkommazahl-klasse definieren. es ginge sogar so, daß man ihn genauso verwenden könnte wie int/float etc.



  • Nimmst int und sagst: die letzten 3 Ziffern sind immer nach dem Komma.

    Bye, TGGC (Demo or Die)


Anmelden zum Antworten