Thread Schleifendurchläufe berechnen (12 answers)
Opened by qwe123qwe at 2014-02-04 13:54

bianca
 2014-02-05 08:58
#173378 #173378
User since
2009-09-13
7016 Artikel
BenutzerIn

user image
2014-02-04T19:29:00 Raubtier
Als besseren Ersatz von int?! Nein, auf keinen Fall!

??

2014-02-04T19:29:00 Raubtier
Die Funktion tut doch etwas völlig anderes. Mag sein, dass sie damals für deine Testfälle das von dir gewünschte Ergebnis gebracht hat - aber deswegen ist sie KEIN besseres int.

int() soll Nachkommastellen abschneiden oder nicht?
Quote
...because machine representations
of floating-point numbers can sometimes produce counterintuitive
results. For example, "int(-6.725/0.025)" produces -268 rather
than the correct -269; that's because it's really more like
-268.99999999999994315658 instead...

Und diesen "Fehler" macht die gezeigte sub nicht.
Wenn du natürlich in Frage stellst, dass bei dem Beispiel aus der Doku zu int() die 269 das richtige Ergebnis ist, dann brauchen wir nicht weiter darüber diskutieren. Das haben wir ja damals schon in ausreichendem Maße getan.
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#!/usr/bin/perl
use strict;
use warnings;
use 5.010;

say "ohne: ".(-6.725/0.025);
say "int(): ".int(-6.725/0.025);
say "integer(): ".integer(-6.725/0.025);

sub integer {
    my $wert = shift (@_) || 0;
    return 'FEHLER' if $wert =~ /e\+?\d+$/;
    return 0 if $wert =~ /e-\d+$/;
    $wert = $1 if $wert =~ /^(.*?)\./;
    $wert = 0 if !$wert or $wert == -0;
    return $wert;
}

Quote
ohne: -269
int(): -268
integer(): -269

Last edited: 2014-02-05 09:23:12 +0100 (CET)
10 print "Hallo"
20 goto 10

View full thread Schleifendurchläufe berechnen