Ich muss fuer einen rng (random number generator) wissen, welches die kleinst moegliche zahl ist.
Das ganze ist ein double und haengt natuerlich vom prozi ab.
sizeof (double) gibt ne 8 also 32 bit vor und nachkomma , richtig ?
Was ist nun die kleinste verarbeitbare double zahl bei sizeof(double)=8 ?
Eigendlich isses mir ja klar aber leider kann ich mit printf noch kleinere zahlen ausgeben als ich ausrechne.
Gruss,
Arvd.
Kleinster Double ?
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Au weia....
Also: double ist 64 Bit lang (8 Byte), die folgendermassen aufgeteilt sind: 1 Bit Vorzeichen, 53 Bit Mantisse, 10 Bit Exponent.
Das ganze entspricht Floating Point Zahlen nach dem IEEE754 Standard, und glaubst gar nicht *wie* verdammt kompliziert das ist...
Bevor ich Dich hier jetzt mit einem langen Traktat zutexte, wie diese Nummer zustande kommt, lies doch einfach: info libc (Paket libc6-doc) und suche (Strg-S) dort nach "DBL_MIN". Auf der Seite sind die ganzen Makros erklärt, die man dazu benutzen kann.
Kurzfassung:
Patrick
Also: double ist 64 Bit lang (8 Byte), die folgendermassen aufgeteilt sind: 1 Bit Vorzeichen, 53 Bit Mantisse, 10 Bit Exponent.
Das ganze entspricht Floating Point Zahlen nach dem IEEE754 Standard, und glaubst gar nicht *wie* verdammt kompliziert das ist...
Bevor ich Dich hier jetzt mit einem langen Traktat zutexte, wie diese Nummer zustande kommt, lies doch einfach: info libc (Paket libc6-doc) und suche (Strg-S) dort nach "DBL_MIN". Auf der Seite sind die ganzen Makros erklärt, die man dazu benutzen kann.
Kurzfassung:
Code: Alles auswählen
#include <float.h>
double minimum = DBL_MIN;
...
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de
Hallo lisan,
hier die Eigenschaften eines gebräuchlichen double-float (aus dem C-Reference-Manual CRefVim kopiert):
Demnäch wäre die betragsmäßig kleinste darzustellende Zahl 2.2250738585072014e-308.
Das Ganze ist aber systemabhängig. Die Bitanzahl und die Bitpositionen sind nicht standardisiert.
http://www.artima.com/underthehood/floating.html
@pdreker: IEEE 754 wurde inzwischen durch IEC 60559, soweit ich weiß.
Viele Grüße
Christian
hier die Eigenschaften eines gebräuchlichen double-float (aus dem C-Reference-Manual CRefVim kopiert):
Code: Alles auswählen
Radix: 2
Sign: 1 bit, = 0 positive, = 1 negative
Exponent: 11 bit, bias 1023
Mantissa: 52 bit, 53 bit resolution
Total Size: 64 bit
Range: 2.2250738585072014e-308...1.7976931348623158e+308
Precision: >= 15 (number of digital digits of precision)
given x, next is: x * (1 + 2.2204460492503131e-16)
Bit: 63 62 52 51 0
s eeeeeeeeeee mmmmmmmm...mmmmmmmmmmmm
s: signe
e: exponent
m: mantissa
Das Ganze ist aber systemabhängig. Die Bitanzahl und die Bitpositionen sind nicht standardisiert.
Das stimmt so nicht. Einen möglichen Aufbau habe ich oben bereits beschrieben. Wenn du mehr wissen willst, siehe z.B. hier:sizeof (double) gibt ne 8 also 32 bit vor und nachkomma , richtig ?
http://www.artima.com/underthehood/floating.html
@pdreker: IEEE 754 wurde inzwischen durch IEC 60559, soweit ich weiß.
Viele Grüße
Christian
- pdreker
- Beiträge: 8298
- Registriert: 29.07.2002 21:53:30
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Nürnberg
Kann sein, aber das funktioniert genauso...@pdreker: IEEE 754 wurde inzwischen durch IEC 60559, soweit ich weiß.
Patrick
Definitely not a bot...
Jabber: pdreker@debianforum.de
Jabber: pdreker@debianforum.de