Anzeige:
Ergebnis 1 bis 2 von 2

Thema: Differenz zweier "gleicher" Zahlen ist ungleich NULL

  1. #1
    Registrierter Benutzer
    Registriert seit
    09.06.2009
    Beiträge
    37

    Angry Differenz zweier "gleicher" Zahlen ist ungleich NULL

    Hallo zusammen,

    ich habe ein GUI programmiert mit Entry-Werten (Zahlen), die ich wie folgt auslese:

    Code:
    my $Vmin = $ent_vdd_min-> get();
    my $Vmax = $ent_vdd_max-> get();
    my $Vstep = $ent_vdd_nom-> get();
    Ich habe folgende Werte in das Gui eingeben:
    Für Vmin: 0.8
    Für Vmax: 1.2
    Für Vstep: 0.2

    Jetzt mache ich Folgendes um zu ermitteln, wieviele Vsteps Vmin von Vmax entfernt ist. Ich weiß, dass $i um den Wert 1 größer ist als die Differenz/Step.
    Hier: (1.2-0.8)/2 --> 2;
    In meinem Bsp. ist $i=3, was aber gweünscht ist.

    Code:
    while ($intV<$Vmax) {
               $intV=$Vmin+$i*$Vstep;
               $i++;
    }
    my $check=$Vmax-$intV;
    Wenn ich nun aber $check ausgebe, so wird ein von NULL unterschiedlicher
    Wert (-2.22...e-16) ausgegeben, was ich mir nicht erklären kann!
    Lass ich nämlich $intV und $Vmax mit "print" ausgeben, werden beide als "1.2"
    dargestellt.

    Bin mit meinem Latein am Ende!

    Ich hab ein "Workaround", möchte aber verstehen was da passiert! Kann mir bitte jemand weiterhelfen?!

    Danke,

    Thomas

  2. #2
    Registrierter Benutzer Avatar von John W
    Registriert seit
    29.01.2010
    Beiträge
    211
    Das ist auf einen Rundungsfehler zurückzuführen. Wenn du z.B. in der Python-Konsole 0.4 eingibst, erhältst du 0.40000000000000002.
    Das ist in vielen Sprachen so und liegt an der internen Speicherung als Dualzahl.
    Die Darstellung der Zahlen ist meist abhängig von der Sprache und von der Genauigkeit, bei einer Zahl wie 1000000000000 ist das nicht gezeigte Milliardstel einfach nicht relevant.

Stichworte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •