Strona 2 z 2 PierwszyPierwszy 12
Pokaż wyniki 11 do 13 z 13

Temat: PERL - dodawanie

  1. #11
    Avatar Mandr4ke
    Mandr4ke jest offline Bez Teamowiec
    Zarejestrowany
    Oct 2008
    Skąd
    W Sieci !!!
    Postów
    282

    Domyślnie

    $a =~ /^[+-]?\d+(\.\d*)?([eE][+-]?\d+)?$/; ? lol

    $liczba=int($liczba+0.5); - Do czesci calkowitej
    $liczba=sprintf "%.2f",$liczba; - Do 2 miejsc
    $liczba=int($liczba); - Po przecinku

    Jak byś chciał po równej odległośći użyj printf-a...

    Dopapraj tez

    log10(x) = log (x) / log (10) - naturalnie albo polepszyc se w takowy sposób

    length(int($x)) ewentualnie

    length(sprintf "%.0f", $x) - Good idea dla duzych liczb ;>

    Byle byś nie polepszal poza przedziałem 0,1 i zapisem typu 1e13):
    "Wszystkie komputery PC są kompatybilne, ale niektóre są kompatybilniejsze od innych... Twój jest zawsze mniej kompatybilny..."

  2. #12
    Zarejestrowany
    Feb 2009
    Postów
    51

    Domyślnie

    Niestety oba podane regexy nie działają - wynikiem zawsze jest 0.00.



    Cytat Napisał Mandr4ke Zobacz post
    $a =~ /^[+-]?\d+(\.\d*)?([eE][+-]?\d+)?$/; ? lol

    $liczba=int($liczba+0.5); - Do czesci calkowitej
    $liczba=sprintf "%.2f",$liczba; - Do 2 miejsc
    $liczba=int($liczba); - Po przecinku

    Jak byś chciał po równej odległośći użyj printf-a...

    Dopapraj tez

    log10(x) = log (x) / log (10) - naturalnie albo polepszyc se w takowy sposób

    length(int($x)) ewentualnie

    length(sprintf "%.0f", $x) - Good idea dla duzych liczb ;>

    Byle byś nie polepszal poza przedziałem 0,1 i zapisem typu 1e13):
    -nie rozumiem tego regexa: $a =~ /^[+-]?\d+(\.\d*)?([eE][+-]?\d+)?$/;
    -nie miałem logarytmów, więc nie wiem, co da: log10(x) = log (x) / log (10)
    -co robi to: length(int($x)) ?
    -co robi to: length(sprintf "%.0f", $x) ?
    -i nie kumam tego: [Byle byś nie polepszal poza przedziałem 0,1 i zapisem typu 1e13 (domyślam się, że jest to szesnastkowy system liczbowy, ale wtedy o co kaman z liczbą 7699)?

    Już myślałem, że Perl jest fajny, bo ma sporo opcji, a tu się okazuje, że trudno napisać w nim program na dodawanie liczb rzeczywistych. :/

    Edit: $a =~ /^[+-]?\d+(\.\d*)?([eE][+-]?\d+)?$/; - ten regex też daje 0.00. ;/

    Edit2: Jednak działają te regexy. Popróbowałem kilka razy i znalazłem błąd (u siebie, nie u Was). Aż wstyd mówić, gdzie się pomyliłem. -.-
    Ostatnio edytowane przez kokosoko : 03-02-2009 - 18:25

  3. #13
    Zarejestrowany
    Jun 2006
    Skąd
    rand(.eu)
    Postów
    8,748

    Domyślnie

    To ja moze wyjasnie dla potomnych

    Kod:
    /^[+-]?\d+(\.\d*)?([eE][+-]?\d+)?$/;
    rozbijajac na czesci

    ^ - poczatek ciagu
    [+-]? - zero lub jeden znakow z dwuznakowej grupy (czyli jeden z tych lub nic)
    \d+ - jedna lub wiecej cyfr
    (\.\d*)? - zero lub jeden ciag '.nnnn' gdzie nnn to cyfry (zero lub wiecej) - w sumie mogloby byc \d+ zamiast \d* moim zdaniem
    ([eE][+-]?\d+)? - zero lub jeden ciag skladajacy sie z litery 'e' duzej lub malej, zero lub jednego znaku z dwuznakowej grupy, jednej lub wiecej cyfr... a calosc tego wyrazenia wystepujaca zero lub jeden raz
    $ - koniec ciagu

    Swoja droga to zastanawiam sie czy koncowka nie powinna byc rozudowana o:

    Kod:
    (([eE][+-])?\d+)?
    bo jesli jest 'e' to musi byc +- dalej...
    ctrl-alt-del.cc - soft reset site for IT admins and other staff :-)

Strona 2 z 2 PierwszyPierwszy 12

Podobne wątki

  1. [Perl] Kurs Perl - cz.1 - wprowadzenie i podstawy
    By TQM in forum Perl/Python/TCL/Prolog
    Odpowiedzi: 22
    Autor: 10-27-2014, 00:50
  2. Odpowiedzi: 18
    Autor: 07-14-2009, 11:55
  3. Dodawanie vhostów do apache bez restartowania
    By suchy in forum Domeny/Serwery
    Odpowiedzi: 4
    Autor: 09-12-2008, 10:18
  4. Odpowiedzi: 31
    Autor: 05-20-2008, 17:01
  5. dodawanie skrótu do menu kontekstowego
    By pierzu in forum Windows
    Odpowiedzi: 0
    Autor: 02-09-2007, 12:38

Tagi

Zasady Postowania

  • Nie możesz zakładać nowych tematów
  • Nie możesz pisać wiadomości
  • Nie możesz dodawać załączników
  • Nie możesz edytować swoich postów
  •  
Subskrybuj