VBA Code für Berechnungen mit Zahlenpaketen

Ich benötige einen Code für Excel 2010, der zwei sehr große Zahlen in kleine Pakete zerlegt und diese dann so multipliziert, dass am Ende dass ergebniss der Multiplikation der beiden Zahlen herauskommt.
Ps.:smiley:ie zahlen sind zu groß für decimal!

Dann nehme doch double…

Hallo Layaxx,

bitte mehr Informationen : wie viele Stellen ?
Frage: Hast Du schon versucht, durch z.B. 10^9 oder so
zu teilen, dann plutimizieren, dann wieder mal der Milliarde ? Einfache Verschiebung müsste doch reichen.
Könnte noch sein, dass Du so viele Stellen hast, dass die Genauigkeit nachlässt…
Was meinst Du mit Decimal ? Double ?

Mit freundlichem Gruße, Matthias

Hallo layaxx,

da kann ich nicht weiter helfen ich bin der Mathematiker.

Gruß Hugo

Ich wüsste nicht, wie das gehen soll:

wenn schon die einzelnen Zahlen zu groß sind für Decimal, dann ist es das Ergebnis alle Mal! Und somit nicht darstellbar.

Einziger sichtbarer Ansatz:
Teile beide Zahlen durch z.B 10.000, streiche die Nachkommastellen weg und multipliziere dann. An das Ergebnis hängst Du dann 8 Nullen und du hast ein Ergebnis mit einem Fehler von max. 0,00000000000000001262%
Das ist eigentlich akzeptabel.

das ist ein mathematisches Problem, hab ich spontan keine Antwort

gruss

Hallo layaxx,

evtl. hilft Dir dieses AddOn:
http://www.excel-ticker.de/in-excel-mit-sehr-grossen…

Alternativ kann man das auch mit Bytes regeln.
Siehe: http://msdn.microsoft.com/de-de/library/vstudio/bb38…

Gruß
Harry

Plutimizieren=Multiplizieren?

Um als Ergebnis 18E+57 zu kriegen…

Dann nehme doch double…

wenn schon die einzelnen Zahlen zu groß sind für Decimal, dann
ist es das Ergebnis alle Mal! Und somit nicht darstellbar.

Das ergebnis lässt sich mit String darstellen.
Aber Danke für den Lösungsansatz!

Oje, ach gleich so hoch! da gibt es einen anderen Trick.
Man müsste die Expopnenten separat berechnen und am Ende mit z.B. einem String zusammenfügen.
Grüsse Sebastian

Um als Ergebnis 18E+57 zu kriegen…

Dann nehme doch double…

Sorry aber mit VBA mache ich nichts, versuche bis heute alles ohne VBA code zu machen!

Sowie ich das aber sehe geht Excel bis auf E+150. Vielleicht könnte man ja die Werte in eine Zelle schieben und dort berechnen lassen.
Grüsse Sebastian

Um als Ergebnis 18E+57 zu kriegen…

Dann nehme doch double…

Hallo Layaxx,

Plutimizieren=Multiplizieren?

ja. Ich bitte um Entschuldigung - die Verdrehung kommt ursprünglich von Astrid Lindgrens Pippi Langstrumpf.
Und nochmal sorry bis kurz vor eben kannte ich „decimal“ noch nicht.
Trotzdem dann noch einmal der Ansatz: wenn Dir 28 Stellen nicht reichen, dann nimm so lange 13 Stellen weg ( 13 * 13 Stellen gibt maximal 26 Stellen)
bis Du Deine gigantische Zahl zusammen hast. Der Rest müsste Algorithmus sein.
Schreib doch mal, wie viele Stellen es denn sind ?
Mit freundlichem Gruße, Matthias

Hallo Du?,

Ich verstehe Deine Aufgabenstellung nicht. Wenn die Zahlen zu groß sein sollen, dann ist das Produkt der Faktoren doch erst recht zu groß…

Gruß
Arnold

Option Explicit
Sub Multi()
Dim Z1T As Variant
Dim Z2T As Variant
Z1T = InputBox(„Bitte geben Sie die erste Zahl ein.“)
Z2T = InputBox(„Bitte geben Sie die zweite Zahl ein.“)
Dim L1 As Long
Dim L2 As Long
L1 = Len(Z1T)
L2 = Len(Z2T)
ReDim Z1(1 To L1) As Integer
ReDim Z2(1 To L2) As Integer
ReDim P(1 To L2, 0 To 2 * L1) As Integer

Dim I As Long
Dim J As Long
Dim Rest As Long

For I = 1 To L1
Z1(I) = Mid(Z1T, I, 1)
Next I
For I = 1 To L2
Z2(I) = Mid(Z2T, I, 1)
Next I

For I = 1 To L2 'ein Durchgang für jede Stelle von Z2
Rest = 0
For J = L1 To 1 Step -1 'mit jeder Stelle mutliplizieren, Rest weiterschleppen
P(I, I + J - 1) = (Z1(J) * Z2(I) + Rest) Mod 10
Rest = Int((Z1(J) * Z2(I) + Rest) / 10)
Next J
If Rest > 0 Then
P(I, I - 1) = Rest
End If
Next I

'jetzt addieren
Dim Erg As Variant
Erg = „“
Rest = 0
For I = 2 * L1 - 1 To 0 Step -1
For J = 1 To L2
Rest = Rest + P(J, I)
Next J
Erg = Trim(Str(Rest Mod 10)) & Erg
Rest = Int(Rest / 10)
Next I
Erg = Trim(Str(Rest)) & Erg
'Debug.Print Erg
MsgBox „.“ & Erg, vbOKOnly, „Ergebnis“
End Sub

(Ist dasselbe wie in der parallelen Anfrage.)