PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zwei Werte vergleichen bringt immer true



Vagabundo
20-07-2009, 16:10
Hallo,

ich muss in einem Perl-script zwei Preise miteinander vergleichen und bekomme trotz gleicher Werte immer einen true

$kalkpreis = $kalkpreis * $pages;
my @resppreis = split(/ /,$RESPOND{Preis});
my $testpreis = $resppreis[0] * 1;
if($kalkpreis != $testpreis)
{
print "******** Preisabweichung:\n";
print "Gemeldeter Preis: $resppreis[0]\n";
print "Errechneter Preis: $kalkpreis\n";
}

Die if-Bedingung wird immer als wahr angesehen. Es kommt immer folgendes Ergebnis:

Gemeldeter Preis: 18.3
Errechneter Preis: 18.3

oder

Gemeldeter Preis: 12.2
Errechneter Preis: 13.2

Durch die vorherigen Berechnungen muesste es sich doch um numerische Werte handeln? Oder habe ich da was falsches im Kopf?

Vagabundo

Molaf
23-07-2009, 21:21
Hallo,

wenn Du einen numerischen Vergleich durchführst, werden die Variablen sowieso in den numerischen Kontext gezwungen, eine Multiplikation mit 1 ist also garnicht nötig.

Du solltest ein print "$kalkpreis \t $testpreis)\n"; direkt vor oder nach der if-Abfrage einfügen, dann würde man die tatsächlien Werte sehen (im Anweisungsteil der if-Schleife gibst Du ja andere Variablen aus als Du verglichen hast).

Hast Du ein use strict; am Anfang des Skripts stehen?

Gruß,
Molaf