![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 20.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Mam taki skrypt:
Ten skrypt wyświetli coś takiego: Y = 16 Nie jest całkowita Mimo, że 16 jest całkowita. To równanie psuje oczywiście 8/6. Zależy mi na sprawdzeniu (w miarę szybki sposób myślę) że y jest całkowitą liczbą. Dodam, że y może być czasami równe nawet np. 1.00001. Jednak przyjmę każdy dobry sposób ![]() |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 98 Pomógł: 0 Dołączył: 5.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
is_int() sprawdza czy zmienna została przesłana jako INTEGER a nie czy jej wartość jest całkowita
-------------------- Pytania i odpowiedzi na każdy temat - ZapytajSie.pl
Darmowe aliasy i liczniki odwiedzin - RFV.pl |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 20.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Pouczające, ale jak sprawdzić czy jej wartość to liczba całkowita
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 100 Pomógł: 11 Dołączył: 20.05.2007 Skąd: z fotela :) Ostrzeżenie: (0%) ![]() ![]() |
jesli sie nie myle to intval() zwraca liczbe całkowitą
wiec na dobra sprawe można sprawdzic czy nie ma zadnych ulamkow w lopatologiczny sposob ![]() $x=$y-intval($y); // dostajemy 0,........ to co w ulamku a potem tylko zifowac czy ulamek($x) jest > 0 Ten post edytował Prym 26.11.2007, 19:43:43 |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
jesli sie nie myle to intval() zwraca liczbe całkowitą wiec na dobra sprawe można sprawdzic czy nie ma zadnych ulamkow w lopatologiczny sposob ![]() $x=$y-intval($y); // dostajemy 0,........ to co w ulamku a potem tylko zifowac czy ulamek($x) jest > 0 AGP bo nieraz jak robi sie jakies dzielenie to chociaz wynik powinien byc calkowity to wyjdzie float z jakims kawalkiem. Wynika to z niedokladnosci floata. np: 2/4 = 2.0000000000000000001 (czesto tak jest, moze akurat nie na tych liczbach tu podanych) rozwiazaniem moze byc zaokroglenie do np 5 miejsca po przecinku : $x=$y-intval( round($y,5) ); |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 15 Pomógł: 0 Dołączył: 20.05.2007 Ostrzeżenie: (0%) ![]() ![]() |
Dzięki za chęci, ale wasze sposoby niestety nie działają
Załatwiłem to tak: function myIsInt ($x){return !(preg_match('/\./', (string)$x));} Pozdrawiam |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
jak nie dzialaja jak dzialaja
widze, ze lubisz chodzic na okolo - regexpy - powodzenia Ten post edytował domis86 27.11.2007, 00:54:59 |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
sh33run koledzy mają rację - twoje rozwiązanie jest takie sobie:
prawidłowa funkcja, odporna na wszystkie typy wejsciowe powinna wyglądać mn. więcej tak:
powodzenia Ten post edytował nevt 27.11.2007, 08:32:38 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#9
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
nevt: obadaj se liczbe 4200000000 na twojej funkcji
![]() |
|
|
![]()
Post
#10
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
oczywiscie że FALSE: 4200000000 nie jest liczbą całkowitą w PHP bo przekracza zakres typu int - zatem twoje rozwiązanie jest idealne dlatego że działa dla tej wartości? nie podoba ci się kiedy ludzie dobrze doradzają - to daj sobie spokój z tym forum. nikt tu nic do ciebie nie ma, a wskazanie słabych stron twojego rozwiązania nie jest atakiem na twoją osobę.
-------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#11
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
Ale kolega sie pytal chyba o to
"jak sprawdzic czy liczba jest calkowita" a nie "jak sprawdzic czy liczba to int" |
|
|
![]()
Post
#12
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 595 Pomógł: 282 Dołączył: 24.09.2007 Skąd: Reda, Pomorskie. Ostrzeżenie: (0%) ![]() ![]() |
zgadza się - moja funkcja działa poprawnie tylko dla liczb w zakresie typu int - ale nie zmienia to faktu że rozwiązanie kolegi nie dziala w znacznie wiekszym zakresie przekazywanych warości. nawet jeśli spełnia jego oczekiwania w jakimś konkretnym zastosowaniu, to powinna się nazywać nie myIsInt() ale myNotDot().
Cytat Zależy mi na sprawdzeniu (w miarę szybki sposób myślę) że y jest całkowitą liczbą. liczby pokazane w pytaniu kolegi nie sa na granicy zakresu int - a kolega twierdzi, że chętnie przyjmie każde dobre rozwiązanie - uważam, że moja funkcja spełnia jego kryteria i potrzeby, jest prosta i czytelna - przeciez forum ma rowniez charakter edukacyjny...
Dodam, że y może być czasami równe nawet np. 1.00001. Jednak przyjmę każdy dobry sposób Ten post edytował nevt 27.11.2007, 11:44:26 -------------------- - Oh no, my young coder. You will find that it is you who are mistaken, about a great many things... - |
|
|
![]()
Post
#13
|
|
![]() Grupa: Zarejestrowani Postów: 255 Pomógł: 5 Dołączył: 20.03.2007 Skąd: Kraków Ostrzeżenie: (30%) ![]() ![]() |
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 03:38 |