• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Modulo liczb zmiennoprzecinkowych.

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
4,378 wizyt
pytanie zadane 20 kwietnia 2015 w C i C++ przez Wiktor Stary wyjadacz (11,120 p.)
Witam, chciałbym otrzymać odpowiedź dlaczego nie mogę stosować modulo przy liczbach zmiennoprzecinkowych.

Pozdrawiam.

3 odpowiedzi

0 głosów
odpowiedź 20 kwietnia 2015 przez Radfler VIP (101,030 p.)

Modulo to dzielenie z resztą. Reszta (czyli wynik), jak sama nazwa wskazuje to liczba całkowita, więc modulo liczb zmiennoprzecinkowych jest bez sensu

1.2 % 6 // co to miałoby być?

 

komentarz 20 kwietnia 2015 przez Radfler VIP (101,030 p.)

Dzielenie z resztą liczb zmiennoprzecinkowych jest bezsensu z matemaycznego punktu widzenia. To chyba tyle laugh

komentarz 20 kwietnia 2015 przez Wiktor Stary wyjadacz (11,120 p.)

Jakoś nie mogę tego pojąć, że dzieląc 2 przez 6 jest ok, a 1,2 przez 6 już nie pasuje. smiley

komentarz 20 kwietnia 2015 przez Radfler VIP (101,030 p.)
Z tego co wiem, to istnieje reguła, że wynik modulo to liczba całkowita.

Więc dla działań:

1.2 % 6  ->  wynik to liczba zmiennoprzecinkowa -> reguła nie została spełniona

7.2 % 1.2  -> tu też reguła nie jest spełniona

7 % 1.2  ->  tu reguła jest spełniona, jednak wynik z automatu staje się liczbą typu double

(nawet gdy jest to liczba całkowita), czyli znowu reguła jest niespełniona.

Nie wiem jak jeszcze mogę to wyjaśnić D: To po prostu kolejna reguła do zapamiętania

tak jak dzielenie przez 0.
komentarz 20 kwietnia 2015 przez Wiktor Stary wyjadacz (11,120 p.)

Dziękuję Tobie bardzo, ale tak dopytywałem, ponieważ do tej pory nie miałem z tym większej styczności.

Mam jeszcze jedno pytanie. Czy mogę zapisać jedną wartość do dwóch zmiennych? Chodzi mi dokładnie o coś takiego:

int x; float y;

cout<<"Podaj liczbę: ";
cin>>x; y;

Czy coś takiego jest możliwe?

*nie mam teraz możliwości tego przetestowania

Pozdrawiam.smiley

komentarz 20 kwietnia 2015 przez katolik6 Dyskutant (8,140 p.)
No chyba raczej cin>>y; x=y; Powinieneś w x mieć y bez przecinka, niezaokrąglone (też nie mam jak sprawdzić).
0 głosów
odpowiedź 20 kwietnia 2015 przez Wally Bywalec (2,840 p.)
Przy liczbach zmiennoprzecinkowych stosuje się http://en.cppreference.com/w/cpp/numeric/math/fmod
0 głosów
odpowiedź 20 kwietnia 2015 przez Eryk Andrzejewski Mędrzec (164,260 p.)
Bo modulo tak nie działa. A jeśli juz chcesz to biblioteka cmath i funkcja fmod(liczba1,liczba2); Pozdrawiam :D

Podobne pytania

+2 głosów
2 odpowiedzi 270 wizyt
0 głosów
1 odpowiedź 3,445 wizyt
0 głosów
1 odpowiedź 6,366 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez Szminka93 Nowicjusz (140 p.)

93,440 zapytań

142,432 odpowiedzi

322,679 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...