Problem z warunkiem dla if

0

Witam,

To jest mój pierwszy post, także na starcie przepraszam za wszystkie niejasności, ale do rzeczy. Od pewnego czasu "bawię" się C++ i dziś wieczorem natchnąłem się na pewien problem. A mianowicie z instrukcją if. Podpowiedziałby mi ktoś jak mam zapisać warunek, aby:

if(i/0.25 == coś)

gdzie "coś" będzie oznaczało liczbę naturalną? Innymi słowy: "jeśli i dzielone przez 0.25 da mi liczbę całkowitą to wykonaj instrukcje"? Nie wiem jak uzyskać właśnie tę liczbe całkowitą. Prawdopodobnie chodzi o jakąś operację matematyczną... Z góry dzięki za pomoc :)

pozdrawiam i liczę się z trywialnością mojego problemu :)

0

Na problem mogłeś się co najwyżej "natknąć", nie "natchnąć". Nie każda liczba całkowita jest liczbą naturalną. Dzielenie przez 0.25 to nic innego jak mnożenie przez 4, jeżeli i jest liczbą całkowitą to wynik takiego dzielenia również musi być całkowity. Co do reszty to oczywiście było na forum, chociażby tutaj: http://4programmers.net/Forum/C_i_C++/129656-C++_ulamek_czy_calkowita

0

if(i%0.25 ==0)
//instrukcje

0

@up - Modulo z liczb zmiennoprzecinkowych jest wolne. Nie żeby to było jakieś szczególnie ważne, ale w tym przypadku zmiana nic nie kosztuje a oszczędności (względne) są spore.

Mały benchmark dla 1000000 operacji:

modulo: 57333 ticks
dzielenie: 382 ticks

(edit - poprawiłem bo poprzednią wersję uruchomiłem w trybie debugowania...)

0

Ale nie dopowiedziałem że moje i też jest typu double... Czyli problem jest taki: jak znaleźć warunek na uzyskanie liczby całkowitej z dzielenia double przez double.

Nadal sobie nie poradziłem z tym...

1

chcesz sprawdzić czy wynikiem dzielenia jest liczba całkowita?

double wynik = i/0.25;
if(((int)wynik) == wynik)
    cout << "wynik to iczba całkowita" << endl;

lub

double wynik = i/0.25;
if(ceil(wynik) == wynik)
    cout << "wynik to iczba całkowita" << endl;
0

Dziekuje. :)

0
szukajByło napisał(a)

Dzielenie przez 0.25 to nic innego jak mnożenie przez 4
skończ najpierw podstawówkę potem się wypowiadaj.

1 użytkowników online, w tym zalogowanych: 0, gości: 1