Perl: Wie vergleichen Fließkomma-zahlen

Schrieb ich das folgende Perl-Skript. Es wird jedoch nicht gedruckt "1". Ich habe einige der Forschung, und es scheint, dass es ist, weil der IEEE Darstellung Fließkomma-Zahl. Also, gibt es eine bessere Möglichkeit zum Vergleich von floating-point-zahlen in Perl?

for (my $tmp = 0.1; $tmp <= 1; $tmp+=0.05){print $tmp."\n"}

Ausgabe:

0.1
0.15
0.2
0.25
0.3
0.35
0.4
0.45
0.5
0.55
0.6
0.65
0.7
0.75
0.8
0.85
0.9
0.95
  • $tmp <= 1+$tolerance
  • zeigen mehr Präzision zu sehen, was passiert (ändern Sie die limit zu 1) perl -e 'for (my $tmp = 0.1; $tmp <= 1.01; $tmp+=0.05){printf "%.20f\n", $tmp}'
InformationsquelleAutor Bin Zhou | 2014-02-05
Schreibe einen Kommentar