Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: modulo dziala niepoprawnie
Forum PHP.pl > Forum > PHP
misty
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
nospor
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ś?
misty
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 ..
nospor
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 wink.gif
misty
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!
nospor
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 wink.gif


ps: na moim linuksowym kalkulatorze to też jest 0.... tak wiem, linuks też jest głupi
Micchaleq
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ć.
nospor
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ć 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.
Micchaleq
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.
nospor
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 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 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
by_ikar
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.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.