Hallo zusammen, kann mir schnell jemand die max. Ganzzahl bei Single u. Double sagen. Bin leider kein Mathe-Genie. Vielen Dank und schöne Festtage
Sch..., zu schnell abgeschickt. Es geht mir nur darum, wenn ich eine Single deklariere deren Wertebereich 1.5 x 10^–45 to 3.4 x 10^38 ist, wie groß max. die Ganzzahl ist die darin enthalten sein kann.
GerK schrieb: > to 3.4 x 10^38 ist, wie groß max. die Ganzzahl ist die > darin enthalten sein kann. Das wird dir zwar nicht weiterhelfen, weil du nicht sagst was du erreichen willst und dich so selbst aufs Glatteis führst aber die größte darstellbare Ganzzahl wäre bei deiner Angabe 3.4 x 10^38. Lese dir mal die Netiquette bzgl Problembeschreibung durch. So wird das nämlich nix.
> Es geht mir nur darum ... 3.4 x 10^38 ... wie groß max. die Ganzzahl > ist die darin enthalten sein kann. In welche Schulklasse gehst du? 10^38 ist eine 1 mit 38 Nullen. Also ist 3.4 x 10^38 eine 34 mit 37 Nullen dahinter.
GerK schrieb: > Sch..., zu schnell abgeschickt. > > Es geht mir nur darum, wenn ich eine Single deklariere deren > Wertebereich > 1.5 x 10^–45 to 3.4 x 10^38 ist, wie groß max. die Ganzzahl ist die > darin enthalten sein kann. 0.0000000000000000000000000000000000000000000015 - 340000000000000000000000000000000000000
Stefan Us schrieb: > In welche Schulklasse gehst du? ca. 40mal in die letzte! Es steckt keine konkrete Anwendung dahinter nur persönlicher Wissensdurst. Single ist ja 32Bit breit. DWord ebenfalls. In Dword passen (2^32) - 1 = 4294967295. Wie passt dann in Single eine 34 mit 37Nullen. Das ist jetzt die ganze Problemstellung.
Max Integer ergibt sich aus den (expliziten und impliziten) Bite Mantisse. IEEE754 vorausgesetzt wären das für single 23+1 Bits also 2^24 und für double 52+1 Bits also 2^53. BTW die Mantisse hat nach IEEE754 kein Vorzeichen. Zudem: aus "Ganzzahl" schließe ich, daß diese (sowie ihre kleineren Brüder) exakt dargestellt sein soll. D.h. 0,1,2,3,4..2^23 ohne Lücke.
GerK schrieb: > Stefan Us schrieb: >> In welche Schulklasse gehst du? > > ca. 40mal in die letzte! > > Es steckt keine konkrete Anwendung dahinter nur persönlicher > Wissensdurst. > > Single ist ja 32Bit breit. DWord ebenfalls. In Dword passen (2^32) - 1 > = 4294967295. Wie passt dann in Single eine 34 mit 37Nullen. > Das ist jetzt die ganze Problemstellung. Weil das zwei verschiedene Zahlenformate sind und demzufolge die Darstellung anders ist. DWord ist eine Ganzzahl, die einfach die Bits in ihrer Wertigkeit darstellt und Single ist eine Gleitkommazahl, die in ihrer Repräsentation in Mantisse und Exponent dargestellt wird.
GerK schrieb: > = 4294967295. Wie passt dann in Single eine 34 mit 37Nullen. > Das ist jetzt die ganze Problemstellung. es passen eben nicht alle Stellen der Zahl da rein. Dein Frage ist im Ansatz schon schief. Denn bei Gleitkommadarstellungen ist die Fragestellung anders. Sie lautet: welches ist die kleinste Differenz zwischen 2 Zahlen, die gerade noch unterschieden werden können. Bei Integer-Darstellungen ist das einfach. Die Differenz ist immer 1. Bei Gleitkommadarstellungen ist das aber nicht so einfach. Die Differenz hängt von der absoluten Größe der Zahl selbst ab. Der Unterschied zwischen 1.2E01 (= 12) und 1.2E02 (=120) besteht nun mal im Exponenten. Dementsprechend ist die Differenz zur nächst größeren Zahl 1.3E01 bzw. 1.3E02 das einemal absolut gesehen 1.0 und das andere mal 10.0 Bei Gleitkommezahlen erkauft man sich einen höheren Wertebereich, indem man bei hohen Zahlen auf Auflösung verzichtet. Über den Daumen kann man sagen, dass ein Float ca. 5 bis 6 signifikante Stellen aufweist. WIchtig: signifikante Stellen! Nicht Nachkommastellen. D.h. für die Zahl 1234.5678 sind 6 signifikante Stellen bei der 6 in den Nachkommastellen aufgebraucht. Alles dahinter ist nur noch gewürfelt. Mit float kann man gerade noch einigermassen zuverlässig zwischen 1234.56 und 1234.57 unterscheiden. Mehr gibt die Auflösung nicht her. Und das ändert sich auch nicht, wenn die Zahlen 123456.0 bzw 123457.0 lauten. Oder 1234560.0 bzw. 1234570.0. Nach 5 bis 6 signifikanten Stellen ist Schluss. 1234563.0 kannst du nicht mehr von 1234564.0 unterscheiden. Daher macht deine Fragestellung so keinen wirklichen Sinn. Denn wenn du mit Ganzzahlen zuverlässig operieren willst, dann nimm einen Ganzzahldatentyp und keinen float oder double.
Karl Heinz schrieb: > Daher macht deine Fragestellung so keinen wirklichen Sinn. Das kann durchaus sein. Dafür hab sogar ich Deine Erklärung verstanden. Das man jeweils den richtigen Datentyp nehmen soll ist mir bewußt und handhabe ich auch so. Ich experementiere gerade in Bascom und da gibt es eine Ungereimtheit. Da ich nicht wissend bin ob es an mir liegt oder an Bascom hab ich mal so ungeschickt gefragt. Dim Zahl As Single Dim X As Word Do Zahl = 1 For X = 1 To 65 Zahl = Zahl * 2 Print "2^ " ; X ; " = " ; Zahl Next X Loop End Bei Single ist bei 2^31 Schluß im Terminal kommt dann nur mehr NAN. Bei Double läufts bis 65 und weiter.
GerK schrieb: > Bei Single ist bei 2^31 Schluß im Terminal kommt dann nur mehr NAN. > Bei Double läufts bis 65 und weiter. Was nichts anderes heisst, als das bei Single auch weniger Bits für den Exponenten vorhanden sind als bei Double. Vergleichbar mit: Ich erlaube dir 2 Stellen für einen Exponenten im Dezmalsystem. Dann ist die größte Zahl, die noch darstellbar ist 1 mal 10 hoch 99 (also eine 1 mit 99 Nullen drann), während ich dir bei double 3 Stellen im Exponenten zugestehe, wodurch du bis 1 mal 10 hoch 999 rauf kommst (also eine 1 mit 999 Nullen hinten drann)
Danke nochmal für Deine Erläuterung. Wünsche Dir und allen Beteiligten frohe Festtage.
Zusammenfassend : siehe auch http://en.wikipedia.org/wiki/IEEE_floating_point mantisse exponent sign signifikant single (32bit float) : 24 bit 7 bit 1 7 double (64bit float) : 53 bit 11 bit 1 15 int/dword 32bit : 31/32 bit - 0/1 9 int/qword 64bit : 63/64 bit - 0/1 18
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.