Jak sprawdzić, czy wynik operacji matematycznej jest intem

0

Mamy w programie na przykład taką operację matematyczną:

c = a + b

Jak sprawdzić, czy zmienna c jest intem?

Chciałbym zrobić ifa tego typu:

if (c = int)
{
cout << "Wynik operacji jest liczbą całkowitą";
}

Ale oczywiście tak się nie da. Jest jakiś inny sposób?

0

Zacznijmy od tego, że zapis typu: if(c = int) oznacza przypisanie do c zmiennej (typu) a nie jego porównanie!
Co do pytania to wszystko uzależnione jest od typu zmiennej a i b bo jeśli a == int oraz b == int to c również będzie int w innym wypadku nastąpi niejawna konwersja (?).

1

Co do "==" - racja, mój błąd.

Przeszukawszy pół Internetu, wreszcie znalazłem rozwiązanie problemu. Należy skorzystać z funkcji floor, czyli zaokrąglanie do dołu (do pełnej liczby). W przypadku liczby zmiennoprzecinkowej, np. 2.52, funkcja floor zaokrągla do 2. A w przypadku liczby całkowitej, np. 2, funkcja floor zaokrągla do... 2.

Jeśli więc c == floor(c), czyli jeśli zmienna c jest równa zmiennej c zaokrąglonej w dół do pełnej liczby, to mamy do czynienia z intem. Tak jak w powyższym akapicie - funkcja floor od liczby 2 to 2.

1
```cpp if(c==(int)c) ``` ```cpp if(!fmod(c,1)) ``` Ale wszystko zależy od tego co chcesz osiągnąć, np 0.1+0.9 to nie wychodzi dokładnie 1
0

Stwórz klasę Fraction, dorób do niej wczytywanie, operacje + - * / + jakie tam jeszcze chcesz i na tym operuj.
Jeżeli reszta z dzielenia licznika przez mianownik będzie wynosić zero, będziesz miał wtedy liczbę całkowitą.

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