Доброго времени суток. Изучаю C++ по книге Р. Лафоре "ООП в с++".
Возникла проблема в программе
#include <iostream>
#include <clocale>
using namespace std;
int main()
{
setlocale(LC_CTYPE, "rus");
float a, c, k;
int b, z;
cout << "Введите количество фунтов: " << endl;
cin >> a;
b = static_cast<int>(a);
c = a - b;
c *= 20;
z = static_cast<int>(c);
k = c - z;
k *= 12;
k = static_cast<int>(k);
cout << "Эквивалентная сумма в старой форме записи: J" <<b<<"."<<z<<"."<<k<< endl;
return 0;
}
Если пользователь вводит к примеру 8.65, то после строк
c *= 20;
z = static_cast<int>(c);
получается, что z=12. Хотя на самом деле должно быть равно 13.
Пусть c=0.65*20, тогда z = static_cast(13). И соответственно при выделении целой части от 13, мы должны получить 13. Помогите разобраться в проблеме.