Portál AbcLinuxu, 10. května 2025 05:33

Dotaz: Perl hadanka (na dobru noc)

21.6.2008 23:46 lm
Perl hadanka (na dobru noc)
Přečteno: 342×
Odpovědět | Admin
Kde je podla Vas chyba?
#!/usr/bin/perl
#

my $x = 0;

print "== first loop ==\n";
for ($x = 2.7; $x <= 3.2; $x += 0.1) {
	printf("%f\t%d\n",$x,(3 < $x));
}

print "== second loop ==\n";
for (2.7, 2.8, 2.9, 3, 3.1, 3.2) {
	$x = $_;
	printf("%f\t%d\n",$x,(3 < $x));
}

print "== wtf loop ==\n";
for ($x = 2.8; $x <= 3.2; $x += 0.1) {
	printf("%f\t%d\n",$x,(3 < $x));
}
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Marek 'Maxicom' Zelenka avatar 21.6.2008 23:56 Marek 'Maxicom' Zelenka | skóre: 14 | Kralupy nad Vltavou
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
Odpovědět | | Sbalit | Link | Blokovat | Admin
$x += 0.1 vs $x ++ 0.1

?
Debian GNU/Linux — instalační příručka v češtině
Marek 'Maxicom' Zelenka avatar 21.6.2008 23:59 Marek 'Maxicom' Zelenka | skóre: 14 | Kralupy nad Vltavou
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
Luboš Doležel (Doli) avatar 21.6.2008 23:57 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nepřenost výpočtů u CPU?
22.6.2008 00:27 lm
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
moze byt, ale SPARC, Alpha, IA-64 sa potom mylia rovnako ako x86 :)
Luboš Doležel (Doli) avatar 22.6.2008 00:41 Luboš Doležel (Doli) | skóre: 98 | blog: Doliho blog | Kladensko
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
V C ten první cyklus vypíše i 3.2, pokud použiju jako typ float. Pokud double, je to jako v Perlu (takže Perl taky používá double).

Důvodem je tohle: 3.2000000000000006217248938
22.6.2008 08:09 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
na tom nevidim nic spatneho, protoze to neni vlastnost konkretniho CPU, ale konkretni reprezentace cisel. a ta je vice mene standardizovana.
In Ada the typical infinite loop would normally be terminated by detonation.
22.6.2008 08:08 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
Odpovědět | | Sbalit | Link | Blokovat | Admin
a co to jako dela chybne? od 2.7 to napocita do 3.2 a od 2.8 ne? tak to je prvni vec ktera je napsana v kazdy knize. nikdy nepouzivat rovnitko u pohyblive carky! porovnani floatu se delaji zasadne takto:

if (abs($x - 3.2) < 1.0E-5) {...}
In Ada the typical infinite loop would normally be terminated by detonation.
22.6.2008 08:33 cronin | skóre: 49
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zaujimave, akurad predvcerom som narazil na toto.
22.6.2008 10:23 pht | skóre: 48 | blog: pht
Rozbalit Rozbalit vše Re: Perl hadanka (na dobru noc)
nebo si precist knutha ;-)
In Ada the typical infinite loop would normally be terminated by detonation.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.