Thread View: pl.comp.lang.php
9 messages
9 total messages
Started by .: Jam Łasica
Wed, 29 Aug 2001 00:51
liczba czalkowita
Author: .: Jam Łasica
Date: Wed, 29 Aug 2001 00:51
Date: Wed, 29 Aug 2001 00:51
11 lines
1199 bytes
1199 bytes
jak zrobić warunek wykrywający liczbe całkowitą czyli....
if($zmi==liczbacałkowita){blabla;}
else{print ("to nie jest liczba całkowita");};
??
Łasic
http://www.flaschool.and.pl -szkólka niedzielna każdego FLAshowca
Re: liczba czalkowita
Author: Darek Sieradzki
Date: Wed, 29 Aug 2001 01:10
Date: Wed, 29 Aug 2001 01:10
22 lines
1458 bytes
1458 bytes
".: Jam Łasica" <m.b@inetia.pl> wrote in
news:9mhe98$plk$1@news.internetia.pl:
> jak zrobić warunek wykrywający liczbe całkowitą czyli....
>
> if($zmi==liczbacałkowita){blabla;}
> else{print ("to nie jest liczba całkowita");};
if (strval((int)$zmi)==$zmi) {
echo "$zmi jest calkowita";
} else {
echo "$zmi nie jest liczba calkowita";
}
DS
--
.---------
(-- a dny jak padli andele prsty ryji hlinu --. .
` `-- a dni jak upadle anioly palcami ryja ziemie --)
---------'
http://www.dago.pmp.com.pl
Re: liczba czalkowita
Author: gemini
Date: Wed, 29 Aug 2001 01:12
Date: Wed, 29 Aug 2001 01:12
10 lines
1150 bytes
1150 bytes
jak zrobić warunek wykrywający liczbe całkowitą czyli....
najprosciej bedzie tak:
if($liczba-round($liczba)==0)
--
..::[GeMiNi]::..
::::[mail: gemini@geminizone.dhs.org]::::
..::[mail: gemini@viper.pl]::..
Re: liczba czalkowita
Author: Piotr Pawlow
Date: Wed, 29 Aug 2001 02:39
Date: Wed, 29 Aug 2001 02:39
32 lines
2253 bytes
2253 bytes
"gemini" <gemini@viper.pl> wrote: > > jak zrobić warunek wykrywający liczbe całkowitą czyli.... > najprosciej bedzie tak: > if($liczba-round($liczba)==0) Rewelacja. W takim razie spójrz na ten przykład: $liczba=4.1-0.1; echo "Liczba $liczba jest "; if($liczba-round($liczba)==0) echo "całkowita"; else echo "ułamkowa"; I co? - liczba 4 okazuje się nie być całkowitą :-) Radzę najpierw poczytać manuala, a szczególnie zwrócić uwagę na zdanie "never compare floating point numbers for equality". Proponuję takie rozwiązanie: if(abs($liczba-round($liczba))<1e-15) echo "całkowita"; else echo "ułamkowa"; Użyta w wyrażeniu stała (1e-15) jest zależna zarówno od wymaganej dokładności testu jak i od wewnętrznej reprezentacji liczb zmiennoprzecinkowych podwójnej precyzji w systemie. Minimalną teoretycznie dopuszczalną wartość można uzyskać biorąc wartość definicji DBL_EPSILON z pliku nagłówkowego "limits.h". W praktyce odczytaną wartość należy zwiększyć o jeden/dwa lub więcej rzędów wielkości, zależnie od ilości działań wcześniej wykonywanych na zmiennej $liczba (a to z powodu kumulowania się błędów obliczeń). -- Pozdrawiam, Piotr Pawłow mailto:pp@siedziba.pl, homepage: http://pp.siedziba.pl
Re: liczba czalkowita
Author: Paweł Sikorski
Date: Wed, 29 Aug 2001 06:19
Date: Wed, 29 Aug 2001 06:19
12 lines
1288 bytes
1288 bytes
> Radzę najpierw poczytać manuala, a szczególnie zwrócić uwagę na zdanie > "never compare floating point numbers for equality". Może się mylę, ale w manualu jest też "is_int -- Find whether a variable is an integer" czyli if (is_int($liczba)) echo "jest"; else echo "nie jest"; O to chodzilo??? ______________________ Paweł Sikorski http://www.wlodkowic.lm.pl
Re: liczba czalkowita
Author: leming nine
Date: Wed, 29 Aug 2001 07:29
Date: Wed, 29 Aug 2001 07:29
38 lines
1897 bytes
1897 bytes
// klasa sprawdzająca poprawność string'ów
class Validator {
// czy string jest liczbą całkowitą?
function isInt($str) {
$exp = "/^(\-)?\d+$/";
return preg_match($exp, strval($str));
}
// czy string jest w ogóle jakąś liczbą?
function isNumeric($str) {
$exp = "/^(\-)?\d+([.,]\d+)*$/";
return preg_match($exp, strval($str));
}
}
// klasa opakowująca
class Number {
// zwraca null, jeśli nie jest to w ogóle liczba
function parseFloat($str) {
if (Validator::isNumeric($str)) {
return doubleval($str);
} else {
return null;
}
}
// zwraca liczbę całkowitą, inaczej - null.
function parseInt($str) {
if (Validator::isInt($str)) {
return intval($str);
} else {
return null;
}
}
}
Validator::isNumeric($nr) || die("To nie jest numer!");
Validator::isInt($nr) || die("To nie jest liczba całkowita!");
// twój kod...
// --
// l9
Re: liczba czalkowita
Author: Piotr Pawlow
Date: Wed, 29 Aug 2001 13:03
Date: Wed, 29 Aug 2001 13:03
15 lines
1421 bytes
1421 bytes
"Paweł Sikorski" <psikor@konin.lm.pl> wrote: > Może się mylę, ale w manualu jest też "is_int -- Find whether a > variable is an integer" > czyli > if (is_int($liczba)) echo "jest"; > else echo "nie jest"; > O to chodzilo??? Raczej nie. is_int sprawdza TYP liczby a nie liczbę, czyli is_int(1.0)=false. A przecież 1.0 jest liczbą całkowitą. -- Pozdrawiam, Piotr Pawłow mailto:pp@siedziba.pl, homepage: http://pp.siedziba.pl
Re: liczba czalkowita
Author: Jarek Durak
Date: Wed, 29 Aug 2001 14:04
Date: Wed, 29 Aug 2001 14:04
19 lines
1167 bytes
1167 bytes
".: Jam Łasica" wrote:
>
> jak zrobić warunek wykrywający liczbe całkowitą czyli....
>
> if($zmi==liczbacałkowita){blabla;}
> else{print ("to nie jest liczba całkowita");};
<?php
$a = 10;
print(gettype($a));
?>
>php -f a.php
integer
>Exit code: 0
J
Re: liczba czalkowita
Author: Piotr Pawlow
Date: Wed, 29 Aug 2001 18:06
Date: Wed, 29 Aug 2001 18:06
14 lines
1450 bytes
1450 bytes
"leming nine" <l9spam@yt.ng.pl> wrote: > // klasa sprawdzająca poprawność string'ów > (...) Fajna klasa, ale: - nie obsługuje notacji naukowej - rzutowanie liczby na stringa używa ustawień locale do konwersji, i z niektórymi localami Twoje testy mogą nie działać prawidłowo. Wiem że się czepiam ale szczegóły są czasem ważne. -- Pozdrawiam, Piotr Pawłow mailto:pp@siedziba.pl, homepage: http://pp.siedziba.pl
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads