float zaokrągla w dół

0
int a = 10, b = 3;
float y;
y = a / b;
int x = ceil(y);
std::cout << "Y: " << y << "\nX: " << x << '\n';

Dlaczego dostaję y = 3? Bo zaraz zgłupieję :D

Jak dam

static_cast<float>(a) / static_cast<float>(b) 

to jest tak jak być powinno.
Ja chyba zapomniałem o jakiś podstawach, bo nie ogarniam.

6

dlatego, że dzielisz 2 liczby całkowite dostajesz wynik całkowity, który przypisujesz do zmiennej float .
W drugim przypadku rzutujesz int na float i dzielisz 2 floaty ;)

0

Zawsze miałem wrażenie, że pierwsza opcja działa i jest poprawnie, a tu takie zdziwienie :) Dzięki!

0

yyyy bo podłoga z 3.(3) to 3?

0

ceil() to sufit a nie podłoga ;-)

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