Hallo zusammen,
Ich möchte folgende Zahl als Dezimalzahl umwandeln:
6,40328E+17
Jemand ne Idee wie ich dies mit ner Formel versehen kann?
Danke
Grüße
Robert
Hallo,
liegt die Zahl als Text vor oder ist das nur so formatiert?
Wenn die Zahl als Text in Zelle A1 steht: =--A1
Aber Achtung! Excel kann Zahlen nur bis 15 Stellen korrekt anzeigen (und auch damit korrekt rechnen), alles was danach kommt wird als 0 aufgefüllt
Moin!
Wenn es wirklich eine Zahl (in Exponential-Schreibweise) ist, brauchst Du doch nur das Zahlenformat auf 0 ändern?
Gruß Ralf
Genau das ist das Problem.
Formatieren als Zahl kommen drei Nullen hinten raus.
Das ist kein Problem, sondern die Anzeige- und Rechengenauigkeit von Excel.
Calc.exe hat eine höhere Rechengenauigkeit, muss - im Ggs. zu Excel - aber auch nur eine einzige Berechnung durchführen.
Wir haben ja in der Schule auch nicht gelernt, dass PI nach der 14. Nachkommastelle "aufhört":
Zelle | Format | Wert |
A1 | 0,0000000000000000000 | 3,14159265358979 |
[
attachment=45040]
Kannst du es mir anhand von meinem Beispiel zeigen?
Ich sehe kein Beispiel, sondern nur einen Text in der Threaderöffnung.
Woher kommt der Wert?
In VBA kann man mit 28 Stellen rechnen:
(im Bereich +/-79.228.162.514.264.337.593.543.950.335)
Man kann einer Variablen aber nicht den (eigentlich benötigten) Datentyp Decimal zuweisen, sondern muss den Umweg über Variant und CDec() gehen.
Die Ausgabe in Excel bewirkt dann wieder das "Abschneiden", deshalb kann man sich hier ausschließlich mit Text behelfen.
Wie Du vielleicht siehst, ist das alles andere als Anfängerwissen.
Und hier mal aus meinem Fundus:
Bilden des Kehrwerts von PI
| A | B | C |
1 | Divident | Divisor | Ergebnis |
2 | 1 | 3,1415926535897900 | 0,3183098861837909996626357358 |
3 | 1 | 3,1415926535897900 | 0,3183098861837910000000000000 |
Zelle | Formel |
B2 | =PI() |
C2 | =DivisionAlsString(A2;B2) |
B3 | =PI() |
C3 | =A3/B3 |
Die zugehörige UDF ist extrem überschaubar:
Function DivisionAlsString(Zahl1 As Double, Zahl2 As Double) As String
'zur Übergabe ans Tabellenblatt
'String, nicht zum weiterrechnen geeignet
DivisionAlsString = CStr(CDec(Zahl1) / CDec(Zahl2))
End Function
@RPR63
interessant, wo lernt man denn so etwas?
Es geht genauso mit Multiplikation.
Danke
(14.09.2022, 12:25)Fennek schrieb: [ -> ]interessant, wo lernt man denn so etwas?
In Foren!
Ein wenig zur Historie:
Ich wollte mal in Excel nachrechnen, wie viele Reiskörner sich auf dem 64. Feld des Schachbretts befinden, wenn die Anzahl (beginnend mit einem Reiskorn auf dem ersten Feld) sich pro Feld verdoppelt.
Dann begab ich mich auf die Suche und landete schnell beim (imaginären) Datentyp Decimal und der internen Umwandlung mittels CDec()
Function Schachbrett() As String
Dim tmpPotenz As Variant
tmpPotenz = CDec(2 ^ 32)
Schachbrett = Format(CStr(CDec(tmpPotenz * tmpPotenz) - 1), "#,##0")
End Function
| A |
1 | falsche Zahl |
2 | 18.446.744.073.709.600.000 |
3 | |
4 | korrekte Zahl |
5 | 18.446.744.073.709.551.615 |
Zelle | Formel |
A2 | =2^64-1 |
A5 | =schachbrett() |
Gruß Ralf