Überlauf in Multiplikationen vermeiden

  • VB.NET

    Ü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:
    Hi,
    Es gibt Integer.MaxValue abgesehen davon war es bei mir so wenn ich in einzelnen Schritte rechne das dies klappt.
    Mfg
    Loadsoft
    :) Mfg Mike
    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.
    mit MaxValue (MinValue) kannst du die maximale (minimale) Größe des Datentyps abfragen.
    versuch mal double oder dezimal und schau mal hier unter "einfache Datentypen".
    :thumbsup: Seit 26.Mai 2012 Oppa! :thumbsup:
    Hi,
    Double = Zahl mit Punkt z.b. 1.5 == 1,5
    Also ist es dass nicht.
    Probier es mal mit einem Int64 / long.
    Mfg
    Loadsoft
    :) Mfg Mike
    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: