[ aleksandarzz @ 24.02.2016. 18:58 ] @
float s;
int d, n, m;
cin >>s >>d;
m=s*100;
n=m/d;
if ((m%d)==0) cout <<" potrebno je " <<n <<" plocica";
else if ((m-(n*d))>(((n+1)*d)-m)) cout <<" potrbno je " <<n+1 <<" plocica ";
else cout <<" potrno je " <<n <<" plocica";
cout <<m;

Ne sećam se više kako glasi zadatak, ovo je sa nekog takmičenja za 5/6 razred osnovne škole.
Kada se za s unese 1.3 onda je m=129, a ne 130 ??? U svakoj drugoj varijanti koju sam probao radi tačno. Jel` zna neko zašto
[ jablan @ 24.02.2016. 20:34 ] @
https://en.wikipedia.org/wiki/Floating_point#Accuracy_problems
[ djoka_l @ 24.02.2016. 20:40 ] @
umesto
float s;
bolje je staviti
double s;

umesto
m=s*100;
bolje je
m=ceil(s*100);
[ Nedeljko @ 27.02.2016. 17:34 ] @
1.3*100 ispada nešto malo manje od 130. Međutim, prilikom pretvaranja realnog broja u ceo zaokrugljuje se na ceo broj koji po apsolutnoj vrednosti ne premašuje realan. Drugim rečima, 129.999 se pretvara u 129.

Ako ti treba najbliža celobrojna vrednost, onda ti je najbolje rešenje

m=100*s+0.5;
[ aleksandarzz @ 28.02.2016. 11:42 ] @
ali zašto je onda 1,4*100 = 140?
Isprobao sam razne brojeve i netačno rešenje sam dobio samo kad unesem 1,3 ili 2,3
[ djoka_l @ 28.02.2016. 15:33 ] @
http://www.binaryconvert.com/convert_float.html

Evo ti sajta.
Unesi decimalan broj 1.3 i konvertuj ga u float.
Dobiješ broj:
1.2999999523162841796875

ako to uradiš sa double, dobiješ
1.30000000000000004440892098501