Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> modulo dziala niepoprawnie
misty
post
Post #1





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


Hej,
pisze do Was w sprawie niedzialajcego poprawnie modulo. Dziwne rzeczy spotykalam juz w php, zdaje sobie sprawe ze ten jezyk jest po prostu glupi, ale nie sadzilam ze moze zle robic modulo? A moze trzeba cos magicznego ustawic w php.ini aby zwracal mi poprawne?

Otoz wynik

var_dump((8.5%2));

Daje mi 0. Jak to mozliwe-nie mam pojecia, ale jak mowie-wiele idiotyzmow widzialam juz w phpie.. czy ktos z Was bylby w stanie mi to wytlumaczyc? Ewentualnie co powinnam zrobic aby ta skomplikowana operacja w php zwracala mi wynik jak w kazdym normalnym jezyku?

pzdr,
misty
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 10)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
. Dziwne rzeczy spotykalam juz w php, zdaje sobie sprawe ze ten jezyk jest po prostu glupi,
To że nie umiesz się nim posługiwać, nie znaczy że jest głupi.

Co do problemu:
a jakiego wyniku się spodziewałaś?
Go to the top of the page
+Quote Post
misty
post
Post #3





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


jezyk sprowadzajacy wszystko do stringa nie moze byc madry.

A spodziewam sie wyniku 0,5 - przeciez to jest wynik reszty z dzielenia 8.5/2 ..
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Trochę podstaw z matematyki:
Dzielenie modulo robi sie tylko i wyłącznie na liczbach całkowitych.
Wynikiem dzielenia modulo jest zawsze liczba całkowita.

Idąc Twoim tokiem rozumowania, matematyka też jest głupia (IMG:style_emoticons/default/wink.gif)
Powód edycji: [nospor]: dopisałem modulo do dzielenia bo mi się zjadło :)
Go to the top of the page
+Quote Post
misty
post
Post #5





Grupa: Zarejestrowani
Postów: 366
Pomógł: 0
Dołączył: 2.01.2007

Ostrzeżenie: (0%)
-----


ps.
wlasciwie to nie Stringa, tylko ciagu znakow alfanumerycznych. bo String to obiekt.

lool, to chyba innej matmy sie uczylismy..

wynik dzialania normalnego jezyka:

  1. public static void main (String[] args){
  2.  
  3. System.out.println(8.5%2);
  4.  
  5. }


jest taki sam jak w kazdym kalkulatorze..

czyli 0.5!
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




http://www.php.net/manual/pl/language.oper....arithmetic.php
Cytat
Operands of modulus are converted to integers (by stripping the decimal part) before processing.


Cytat
jest taki sam jak w kazdym kalkulatorze..
Mam to szczęście, że nie muszę uzywać kalkulatorów (IMG:style_emoticons/default/wink.gif)


ps: na moim linuksowym kalkulatorze to też jest 0.... tak wiem, linuks też jest głupi
Go to the top of the page
+Quote Post
Micchaleq
post
Post #7





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

Ostrzeżenie: (0%)
-----


Znak modulo % działa jedynie dla liczb całkowitych, podając 8,5 traktowane jest jako 8

fmod(8.5 , 2);

ahh i jeszcze jedno ( przykład z mauala )

  1. function modulo($val, $div) {
  2. $r = $val - (floor($val/$div)*$div);
  3. return $r;
  4. }


PS: Głupio to ty podpisałaś temat nie czytając dla jakich liczb działa %


Cytat
Wynikiem dzielenie jest zawsze liczba całkowita.


Trochę pojechałeś

Ciekawe jak byś wytłumaczył dwóm dzieciom, że masz 5 batonów, ale jednego musisz oddać bo nie masz go jak podzielić.

Ten post edytował Micchaleq 8.12.2011, 09:09:42
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Trochę pojechałeś
Być może. Moja wiedza na temat modulo skończyła się na etapie liczb całkowitych.
Jestem jednak na tyle bystry by zaglądać do manuala i czytać co napisane tam jest przy funkcjach, ktore używam i nie latam po forach i nie psioczę na "głupie" php tylko dlatego, że nie umiem go używać (IMG:style_emoticons/default/wink.gif)

Cytat
Ciekawe jak byś wytłumaczył dwóm dzieciom, że masz 5 batonów, ale jednego musisz oddać bo nie masz go jak podzielić.
yyy, mylisz teraz dzielenie z modulo. Dzielić umiem
5/2 = 2.5 Każde dziecko dostanie 2.5 batona.
Go to the top of the page
+Quote Post
Micchaleq
post
Post #9





Grupa: Zarejestrowani
Postów: 186
Pomógł: 4
Dołączył: 13.10.2009

Ostrzeżenie: (0%)
-----


Idąc waszym tokiem myślenia każdy język jest głupi. Ja tak kiedyś stwierdziłem o c jak chciałem zwrócić wynik z dodawania 2 kompletnie innych zmiennych.

Moim zdaniem to nie języki są głupie tylko ludzie którzy nie potrafią z nich korzystać.

W każdym z języków są jakieś błędy a mądrością powinna być wiedza o nich i umiejętność ich omijania bądź naprawiania.

Zresztą skoro php jest głupie to szkoda ze 90% stron internetowych jest dzięki niemy napisana, ale w zasadzie lepiej jak były by w samym html-u istotnie mądry język statyczne strony bez awarii i praca dla ludzi chcący podmieniać treści.
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Moim zdaniem to nie języki są głupie tylko ludzie którzy nie potrafią z nich korzystać.
To samo napisałem w pierwszym poście. Ino bez wyzywania ludzi od głupich (IMG:style_emoticons/default/wink.gif)

Cytat
Ciekawe jak byś wytłumaczył dwóm dzieciom, że masz 5 batonów, ale jednego musisz oddać bo nie masz go jak podzielić.
Już wiem, czemu pomyślałeś, że piszę głupoty.

Napisałem:
Wynikiem dzielenia jest liczba całkowita.

MIałem oczywiście na myśli dzielenie modulo. Przecież o tym pisałem (IMG:style_emoticons/default/smile.gif) Już poprawiłem by nie było wątpliwości o jakim dzieleniu mówilem

Wydzielilem posty do OFF. Tam sie klocic. Każdy kolejny post o głupim php poleci wraz z ostrzezeniem
Go to the top of the page
+Quote Post
by_ikar
post
Post #11





Grupa: Zarejestrowani
Postów: 1 798
Pomógł: 307
Dołączył: 13.05.2009
Skąd: Gubin/Wrocław

Ostrzeżenie: (0%)
-----


A ja się odniosę jedynie do tego, że podobno w innych językach działa to prawidłowo, a w pechapie już nie: http://pl.wikipedia.org/wiki/Modulo a dokładnie ten kawałek:

Cytat
Są różne sposoby określania reszty, a komputery i kalkulatory mają różne sposoby przechowywania i reprezentowania liczb, więc to co dokładnie jest wynikiem operacji modulo zależy od języka programowania i/lub sprzętu.


Po lewej stronie na wikipedi jest tabelka która pokazuje w jakich językach programowania co zwraca modulo.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 24.08.2025 - 14:42