test na cislo

Jiri Polcar polcar na physics.muni.cz
Čtvrtek Říjen 24 16:48:38 MEST 2002


On Thu, Oct 24, 2002 at 04:42:04PM +0200, Marian Cavojsky wrote:
> On Thu, Oct 24, 2002 at 04:31:54PM +0200, Marian Cavojsky wrote:
> > On Thu, Oct 24, 2002 at 04:29:15PM +0200, Marian Cavojsky wrote:
> > > On Thu, Oct 24, 2002 at 03:30:17PM +0200, Jiri Polcar wrote:
> > > > On Thu, Oct 24, 2002 at 02:12:32PM +0200, Honza Pazdziora wrote:
> > > > > On Thu, Oct 24, 2002 at 02:07:24PM +0200, Jiri Polcar wrote:
> > > > > > 
> > > > > > Pokud udelam,
> > > > > > 
> > > > > >     $min = '3231g42';
> > > > > > 
> > > > > >     {
> > > > > >         local $^W = 0;
> > > > > >         $min += 0;
> > > > > >     }
> > > > > > 
> > > > > > bude v $min `3231'. To ovsem meni to, co uzivatel zada. Ten zadal
> > > > > 
> > > > > Stale jste nerekl, co je to, co uzivatel z^a'da'.
> > > > 
> > > > Uzivatel z^a'da', aby kdyz zada cislo v libovolnem prijatelnem tvaru,
> > > > tak aby bylo akceptovano, pouzito pri vypoctu, ...  
> > > > Naopak, pokud zada vec, ktera neni cislem, aby o tom byl zpraven a
> > > > vypocet se neprovedl.
> > > > 
> > > > Z chovani perlu pri (napr.) scitani je jasne, ze perl vi (umi poznat),
> > > > jestli to cislo je nebo neni, takze pouzivani  regularnich vyrazu pro
> > > > test znamena duplikaci prace, kterou  uz perl udelal. Jde o to, jak z
> > > > nej tu informaci dostat.
> > > > 
> > > 
> > > /^-?\d+(.\d+)?([e|E][+|-]\d+)?$/
> > > 
> > Samozrejme, ze je tam chyba.
> > 
> > /^-?\d+(\.\d+)?([e|E][+|-]\d+)?$/
> > 
> Posledna uprava:
> 
> /^[+|-]?\d+(.\d+)?([e|E][+|-]?\d+)?$/

No, neproleze napriklad:

    .3
    -3.e+43

Vylepsil jsem to na:

    /^-?\d*(\.\d*)?(E[+|-]?\d+)?$/i

potiz je v tom, ze proleze i

    .e2

na coz Perl pri numerickem vyhodnocovani hodi warning. To je prave ta
zakernost RE, ktere jsem se chtel vyhnout.

-- 
JP


Další informace o konferenci Perl