Może ktoś pomoże pomysł bo ja już nie mam siły. Język C++. Proste zadnie na studia. Mam daną "money" typu float przechowującą pieniądze czyli na przykład 2.30 złotego. Potrzebuję napisać funkcję zawracającą ile jest groszy w tej danej (typ int).
No i robię to tak:
int zlote = floor(money); int grosze = (money - zlote)*100; return grosze; No i tutaj jest problem że na przykład dla 2.30 złotych wyrzuca mi 29 gorszy ( ͡°ʖ̯͡°)
@przegrywam_przez_miasto: bo to float, 2.30 może być pamiętane przez komputer jako 2.299999999515714 czy coś w tym stylu. Dodaj sobie jakąś małą wartość, np pół grosza przed konwersją
@Passer93: jak najbardziej masz rację, ja tu tylko napisałem że po języku bez gc nie spodziewałbym się natywnej obsługi decimali. Aczkolwiek mogę się oczywiście mylić, dużo się takimi niskopoziomowymi rzeczami nie bawiłem
Język C++. Proste zadnie na studia.
Mam daną "money" typu float przechowującą pieniądze czyli na przykład 2.30 złotego.
Potrzebuję napisać funkcję zawracającą ile jest groszy w tej danej (typ int).
No i robię to tak:
int zlote = floor(money);
int grosze = (money - zlote)*100;
return grosze;
No i tutaj jest problem że na przykład dla 2.30 złotych wyrzuca mi 29 gorszy ( ͡° ʖ̯ ͡°)
#programowanie #cpp
int returnGroshes(float money){
int groshes = money * 100;
return groshes % 100;
}
Następny proszę.
@przegrywam_przez_miasto: morał z tego prosty, nie trzymaj pieniędzy jako floatów.
Integer z liczbą groszy rozwiąże twoje problemy. ( ͡° ͜ʖ ͡°)
@croppz: Panie, ja tam wolę mieć kontrolę nad pamięcią.