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

Modulo liczb zmiennoprzecinkowych.

Object Storage Arubacloud
0 głosów
3,918 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 112 wizyt
0 głosów
1 odpowiedź 3,166 wizyt
0 głosów
1 odpowiedź 5,776 wizyt
pytanie zadane 13 stycznia 2017 w C i C++ przez Szminka93 Nowicjusz (140 p.)

92,760 zapytań

141,684 odpowiedzi

320,470 komentarzy

62,104 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.

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...