Re[5]: Округление double
От: _DAle_ Беларусь  
Дата: 10.06.15 09:33
Оценка: +2
Здравствуйте, SL, Вы писали:

SL>и вместо 4.725, в d получаю 4.7249999999999996, тут так то все понятно так устроен double, но ведь можно же это как то учесть.


Если у тебя изначально числа с фиксированной разрядностью, то надо стараться использовать fixed point арифметику. То есть в твоем примере надо умножать не на 0.18, а на 18, и затем использовать целочисленные операции:
int d =  2625 * 18;
d = ((d + 50) / 100);
cout << d / 100 << '.' << setfill('0') << setw(2) << d % 100;
Отредактировано 10.06.2015 9:38 _DAle_ . Предыдущая версия . Еще …
Отредактировано 10.06.2015 9:35 _DAle_ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.