Seite 1 von 1

Genauigkeit einer kommazahl

Verfasst: Sa Sep 12, 2009 9:38 pm
von nervensaege
Moin
ich versuche mich gerade bei der umsetzung eines kleinen programms für den physikunterricht.
Mein problem ist aber das ich dafür zahlen im bereich von 10^-19 und kleiner brauche.
Das Programm das ich bisher geschrieben habe um zu sehen ob diese zahlen überhaupt angezeigt werden zeigt nur 0,00000 an :( .
Das was ich bisher geschrieben habe sieht so aus:

Code: Alles auswählen

#include <stdio.h>
#include <math.h>

int main()
{
    float h = 4.1357*pow(10,-19);
    printf("hier sollte jetzt das planksche wirkungsquantum angezeigt werden: %f\n",h);
    return 0;
}
jemand irgendeine idee?

Re: Genauigkeit einer kommazahl

Verfasst: Sa Sep 12, 2009 10:06 pm
von fat-lobyte
nervensaege hat geschrieben:Moin
ich versuche mich gerade bei der umsetzung eines kleinen programms für den physikunterricht.
Mein problem ist aber das ich dafür zahlen im bereich von 10^-19 und kleiner brauche.
Das Programm das ich bisher geschrieben habe um zu sehen ob diese zahlen überhaupt angezeigt werden zeigt nur 0,00000 an :( .
Das was ich bisher geschrieben habe sieht so aus: jemand irgendeine idee?
Tag!
Also ein heißer Tip wäre mal, die Zahl der Angezeigten stellen zu erhöhen. Standardmäßig gibt printf() nämlich nur 7 Stellen (oder so) aus. Das geht so:

Code: Alles auswählen

    printf("hier sollte jetzt das planksche wirkungsquantum angezeigt werden: %.25f\n",h);
Dann zeigt das Programm bei mir schon das an:
$ ./flttest
hier sollte jetzt das planksche wirkungsquantum angezeigt werden: 0.0000000000000000004135700
Weiters solltest du das float durch double ersetzen. Double hat (wie der Name schon sagt) die doppelte Genauigkeit (verbraucht aber auch doppelt so viel speicher, nämlich 8 Bytes).

Außerdem könntest du "optimierungen" vornehmen. Wenn du mit Zahlen ähnlicher größenordnungen Arbeitest, könntest du die "Bedeutung" einer Zahl neu definieren - also du sagst wenn in einem Double eine 5 Abgespeichert ist, bedeutet es nicht mehr 5 sondern 0.00000005.
Dann musst du nur noch bei der eingabe bzw. ausgabe "umrechnen", wobei du nicht rechnest sondern einfach nur ein paar nullen vor die ausgabe der Zahl schreibst.

Wenn deine Zahlen sehr (sehr) verschieden Größenordnungen haben, dann helfen nur noch Bibliotheken die "Beliebige Genauigkeiten" unterstützen, wie z.B. die GNU MP Bibliothek: http://gmplib.org/
Soweit wird es aber im Physikunterricht aber eher nicht kommen ;-) Benutz mal die ersten beiden Tips. Wenn du nicht auskommst, dann mach das mit dem "umdefinieren".

mfg, fat-lobyte

Re: Genauigkeit einer kommazahl

Verfasst: Sa Sep 12, 2009 10:41 pm
von nervensaege
super vielen dank :D