Überlauf in Multiplikationen vermeiden

  • VB.NET

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Vatter.

    Überlauf in Multiplikationen vermeiden

    Hey Leute, ich hab ein kleines Problemchen. Und zwar will ich mit sehr hohen Zahlen multiplizieren können, auch mal so 100-Stellig. Tja. Ich rechne 1600 ^ 2 und heraus kommt 2560000. Noch einmal ^ 2: 6553600000000. Beim nächsten Klick auf den Button hat die Multiplikation einen Überlauf verursacht. Das liegt wohl am Integer, oder? Der kann ja nur eine bestimmte Anzahl an Stellen haben. Wie kann ich jetzt im 10 ^ 100-Bereich rechnen? Welchen Datentyp Brauche ich? Oder muss ich jetzt mit Strings "Schriftlich" multiplitzieren?

    Wäre sehr Dankbar für jede Hilfe!

    Mfg Kouki :thumbup:
    1. Ist das eine Konstante und ich sehe keine Set-Anweisung. Könnt ja auch sein, dass man das verändern kann, aber selbst wenn, dann
    2. ist MaxValue auch ein Integer und kann deshalb nicht noch höher als das Maximum gestellt werden.

    Und zum "abgesehen davon": Rechnest du bei Integern mit so hohen Zahlen oder mit kleineren als das Maximum? 8|

    Trotzdem danke für die schnelle Antwort.
    decimal ist ein 128-bit Gleitkommazahl mit einem ungefähren Wertebereich ±1,0 × 10-28 bis ±7,9 × 1028 .
    Integerist eine 32bit-Ganzzahl mit einem Wertebereich von -2.147.483.648 bis einschließlich 2.147.483.647.
    Damit kann man natürlich nicht unendlich multiplizieren.
    Edita:
    Zu Int64 solltest du folgendes beachten:
    Die Zuweisung einer Instanz dieses Typs ist nicht auf allen Hardwareplattformen threadsicher, da die binäre Darstellung der Instanz u. U. zu groß ist, sodass die Zuweisung nicht in einem einzelnen atomaren Vorgang abgeschlossen werden kann.
    (Quelle MSDN
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup: