Leser: 33
1 2 3 4 5 6 7 8 9
my $zahl1 = 1; if ($zahl1 % 2 == 0) { print "ganzzahlig"; } else { print "nicht ganzzahlig"; }
1 2 3 4 5
# Zahl prüfen ob gültige Ganzzahl if ($zahl1 !~ /^(0|([+-]?\d+))$/) { print "keine "; } print "Ganzzahl\n";
2009-11-27T16:39:03 GwenDragon??Sieht so aus, als ob hier genügend Poster nicht wissen was eine Ganzzahl ist.
2009-11-27T16:39:03 GwenDragonWarum ist die Verwendung abwegig?Oder warum die ganze Diskussion um Vergleich von Strings und Rundungen oder die abwegige Verwendung von int.
2009-11-27T16:39:03 GwenDragonWarum hast Du da die 0 extra stehen. Die gehört doch zu \d dazu.Na, wem obige Lösung nicht gefällt soll doch anders probieren.
2009-11-27T16:43:44 reneeWarum hast Du da die 0 extra stehen. Die gehört doch zu \d dazu.
1 2 3 4 5 6 7 8
use Regexp::Common; if ( $input =~ m/\A$RE{num}{int}\z/ ) { print "Ganzzahl eingegeben\n"; } else { print "Keine Ganzzahl\n"; }
1
2
3
4
5
6
7
8
9
10
$ perl -wl
$num = 3.43221;
if ( int $num ) {
print "Ganzzahl";
}
else {
print "keine Ganzzahl";
}
Ganzzahl
if (int $calculated_row == $calculated_row)
1
2
3
4
jars@jars-desktop:~$ perl -wle 'my $var = "1test"; print "yes" if int $var == $var'
Argument "1test" isn't numeric in int at -e line 1.
yes
jars@jars-desktop:~$
perl -wle ' print int("0butTrue") == 0'
2009-11-27T19:34:05 LanX-Man könnte aber bemängeln das folgendes eine Warnung ergibt
Code: (dl )perl -wle ' print int("0butTrue") == 0'
perl -lwe ' print int("0 but true") == 0'
You should not use this function for rounding: one because it truncates towards 0, and two 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.
Usually, the "sprintf", "printf", or the "POSIX::floor" and "POSIX::ceil" functions will serve you better than will int().
print "SPRINTF : >" . sprintf("%d",0.57 * 100) . "<\n";
print "INT : >" . int(.57 * 100) . "<\n";
print "FLOOR : >" . floor(0.57 * 100) . "<\n";
if (int (.57*100) eq 57)
2009-11-27T13:38:37 reneeWenn, dann würde ich das == mit eq ersetzen, sonst bekommst Du bei Strings eine Warnung...
1
2
3
my $str = "42x";
print $str == int($str) ? "==" : "!="; # "=="
print $str eq int($str) ? "eq" : "ne"; # "ne"
2009-11-27T15:54:46 betterworld" würde sich auch dasselbe Ergebnis zeigen (update: oder auch mit "042"). Muss man halt wissen, was günstiger ist.
2009-11-27T16:06:53 LanX-man muss wissen was man will, es funktioniert doch alles genau wie definiert.
1
2
3
4
5
6
7
8
9
10
11
#!/usr/bin/perl
use strict;
use warnings;
my $zahl = 5.7;
if(int($zahl)) {
print "ganze Zahl\n";
}else{
print "keine ganze Zahl\n";
}