Excel Nachkommastellen Großrechner gesucht

Hallo Wissende,
hier war doch die Anfrage wegen 40 Nachkommastellen bei OO.
Gut, 40 sind bei Excel indiskutabel, weil sowieso nur 15 signifikante Ziffern gespeichert werde, Rest sind Nullen.
Jetzt habe ich da was gebastelt, was beliebig lange Zahlen als String multipliziert und als Ergebnis ein String ist der beliebig viele Nachkommastellen hat.
Problem ist nur, wie kann ich das, also die Vba-Ergebnisse, überprüfen?

Hat denn jemand Zugriff auf einen Großrechner o.ä. damit ich weiß das
3581732491706,00171274906819240648827136
mal
3581732491706,00171274906819240648827136
auch wirklich
12828807642142483628008411,3678385348385296289113712848697989138769932409962496
ergeben.

Dankeschön wenn das jmd mal für mich rechnen ließe :smile:

Ansonsten, hier ist die Datei:
http://www.hostarea.de/server-12/Dezember-f0ea37c6a7…

Sie hat nachfolgenden Code.

Im Blatt1 sieht es so aus:

Tabelle:
F:\[Malnehmen.xls]!Tabelle1
 │ A │ B │ 
──┼───────────────────────────┼─────────────────────────────────┤
1 │ 3456,78945600000000000000 │ 1892546,56262561000000000000 │ 
2 │ 547,48678990000000000000 │ 1892546,5626256072944 │ 
3 │ 0,45688933339939300000 │ 0,75270626136006800000 │ 
4 │ 1,64745859956876000000 │ 0,75270626136006827649464576268 │ 
──┴───────────────────────────┴─────────────────────────────────┘

Benutzte Formeln:
B1: =A1\*A2
B2: =Mal(A1;A2)
B3: =A3\*A4
B4: =Mal(A3;A4)




Tabelle:
F:\[Malnehmen.xls]!Tabelle1
 │ C │ 
──┼──────────────────────────────────────────────────────────────┤
1 │ 3581732491706,00000000000000000000 │ 
2 │ 3581732491706,00171274906819240648827136 │ 
3 │ 0,56656671589065200000 │ 
4 │ 0,5665667158906514133396471608305369492024599098972788807824 │ 
──┴──────────────────────────────────────────────────────────────┘
Benutzte Formeln:
C1: =B1\*B1
C2: =Mal(B2;B2)
C3: =B3\*B3
C4: =Mal(B4;B4)

usw. für noch 2 Spalten

Mit den Kommastellen scheint noch der Wurm im Code zu sein, aber die Ziffernfolgen sehen okay aus.

Gruß
Reinhard

Der code von Modul1:

Option Explicit
'
Function Mal(ByVal a, ByVal b) As String
Dim x, y, n, nn, Komma
x = CStr(Application.WorksheetFunction.Substitute(a, ",", ""))
x = CStr(Application.WorksheetFunction.Substitute(x, ".", ""))
x = CStr(Application.WorksheetFunction.Substitute(x, "'", ""))
y = CStr(b)
y = CStr(Application.WorksheetFunction.Substitute(y, ",", ""))
y = CStr(Application.WorksheetFunction.Substitute(y, ".", ""))
Mal = String(Len(x), "0")
For n = 1 To Len(y)
 For nn = 1 To Asc(Mid(y, n, 1)) - 48
 Mal = Plus(Mal, x)
 Next nn
 If Len(y) \> 1 Then Mal = Mal & "0"
Next n
Mal = Left(Mal, Len(Mal) - 1) 'letzte 0 weg
Komma = Len(a) - InStr(a, ",") + Len(b) - InStr(b, ",")
Mal = Left(Mal, Len(Mal) - Komma) & "," & Mid(Mal, Len(Mal) - Komma + 1)
End Function
'
Function Plus(ByVal a As String, ByVal b As String)
Dim n, Merk, P
If Len(a) \> Len(b) Then b = String(Len(a) - Len(b), "0") & b
If Len(b) \> Len(a) Then a = String(Len(b) - Len(a), "0") & b
For n = Len(a) To 1 Step -1
 P = Asc(Mid(a, n, 1)) + Asc(Mid(b, n, 1)) - 96 + Merk
 If P \>= 10 Then
 P = Right(P, 1)
 Merk = 1
 Else
 Merk = 0
 End If
 Plus = CStr(P) & Plus
Next n
If Merk = 1 Then Plus = "1" & Plus
End Function

Grüezi Reinhard

Hallo Wissende,

Na, das nun nicht gerade, aber hier ein Link zu diesem interessanten Thema. Da hat sich schon mal wer Gedanken dazu gemacht, die vielleicht hilfreich sein könnten:

http://www.rendar.de/excel/langezahlen/liesmich.txt
http://www.rendar.de/excel/langezahlen/liesmich_lr.txt


Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Na, das nun nicht gerade, aber hier ein Link zu diesem
interessanten Thema. Da hat sich schon mal wer Gedanken dazu
gemacht, die vielleicht hilfreich sein könnten:

http://www.rendar.de/excel/langezahlen/liesmich.txt
http://www.rendar.de/excel/langezahlen/liesmich_lr.txt

Hallo Thomas,
dankeschön, ich schaue mir die xla mal an.
Gruß
Reinhard

Na, das nun nicht gerade, aber hier ein Link zu diesem
interessanten Thema. Da hat sich schon mal wer Gedanken dazu
gemacht, die vielleicht hilfreich sein könnten:

http://www.rendar.de/excel/langezahlen/liesmich.txt
http://www.rendar.de/excel/langezahlen/liesmich_lr.txt

Hallo Thomas und Interessierte,
die Ergebnisse meines nochmal geänderten Codes und die aus der lr_mult
() aus der .xla habe ich verglichen und siehe da, sie liefern gleiche
Ergebnisse, auch bei der 130ten Nachkommastelle noch *freu*

Der Vergleich der beiden Codes brachte heraus dass wir beide im
wesentlichen genauso vorgegangen sind.

Mein Code ist nachfolgend gelistet, er erwartet beide zu
multipizierenden Werte als String.
Hinweis mit ="’"&A1 hat man ja schon einen String, der Code weiß das
evtl. ein Hochkomma vorne steht.

Den anderen Code kann ich hier nicht posten weil er PW geschützt in
der .xla in dem Link steht.

=ZUFALLSZAHL()\*0,56 0,097785693866107400000000000000
=ZUFALLSZAHL()\*0,78 0,099787877949763800000000000000
="'"&B1 0,0977856938661074
="'"&B2 0,0997878779497638
'
=B1\*B2 0,009757826884744090000000000000
=mal(B3;B4) 0,00975782688474409189190065543212
=lr\_mult(B1;B2;50) 0,00975782688474409189190065543212000000000000000000
'
'
=B6\*B6 0,000095215185512634600000000000
=mal(B7;B7) 0,0000952151855126345891904629476091146429172223660852472639276944
=lr\_mult(B8;B8;80) 0,00009521518551263458919046294760911464291722236608524726392769440000000000000000

Danke nochmals für den Link Thomas, ich hatte schon ernsthaft befürchtet Riesenzahlen mit Papier und Bleistift muliplizieren zu müssen :frowning: :smile:)

Gruß
Reinhard

Getestet auf XL97, in Modul1:

Option Explicit
'
Function Mal(ByVal a As String, ByVal b As String) As String
Dim x As String, y As String, n As Integer, P As Integer, Merk As Integer
Dim NN As Integer, k As Integer, a2, b2, V
x = Application.WorksheetFunction.Substitute(a, "+", "")
x = Application.WorksheetFunction.Substitute(x, "-", "")
x = Application.WorksheetFunction.Substitute(x, ".", "")
x = Application.WorksheetFunction.Substitute(x, "'", "")
a2 = x
x = Application.WorksheetFunction.Substitute(x, ",", "")
y = Application.WorksheetFunction.Substitute(b, "+", "")
y = Application.WorksheetFunction.Substitute(y, "-", "")
y = Application.WorksheetFunction.Substitute(y, ".", "")
y = Application.WorksheetFunction.Substitute(y, "'", "")
b2 = y
y = Application.WorksheetFunction.Substitute(y, ",", "")

For n = 1 To Len(y)
 For NN = 1 To Asc(Mid(y, n, 1)) - 48
 Mal = Plus(Mal, x)
 Next NN
 Mal = Mal & "0"
Next n
Mal = Left(Mal, Len(Mal) - 1)
If InStr(a2, ",") Then k = Len(a2) - InStr(a2, ",")
If InStr(b2, ",") Then k = k + Len(b2) - InStr(b2, ",")
If k \>= Len(Mal) Then Mal = String(k - Len(Mal) + 1, "0") & Mal
If k Then Mal = Left(Mal, Len(Mal) - k) & "," & Mid(Mal, Len(Mal) - k + 1)
If InStr(a, "-") Then V = V + 1
If InStr(b, "-") Then V = V + 1
If V = 1 Then Mal = "-" & Mal
End Function
'
Function Plus(ByVal x As String, ByVal y As String) As String
Dim n As Integer, P As Integer, Merk As Integer
If Len(x) \> Len(y) Then y = String(Len(x) - Len(y), "0") & y
If Len(y) \> Len(x) Then x = String(Len(y) - Len(x), "0") & x
For n = Len(y) To 1 Step -1
 P = Asc(Mid(x, n, 1)) + Asc(Mid(y, n, 1)) - 96 + Merk
 If P \>= 10 Then
 Merk = 1
 P = Right(P, 1)
 Else
 Merk = 0
 End If
 Plus = CStr(P) & Plus
Next n
If Merk = 1 Then Plus = "1" & Plus
End Function