Re[3]: Округление в С++
От: telek1024  
Дата: 16.12.10 11:42
Оценка:
Здравствуйте, Adriano, Вы писали:

A>Здравствуйте, telek1024, Вы писали:


T>>Или ещё можно написать std::setprecision(20) вместо std::setprecision(3)и посмотреть, что выведет программа.


A>Если установить точность — 4, то все правильно:


Так я сказал про 20 Поставьте 20 и поймёте, почему при 3 — неправильно, а при 4 правильно.

A>Как быть если нужна точность 3 знака после запятой?

Не использовать числа с плавающей точкой.

Я подозреваю, что у вас там деньги или котировки. Ни double, ни float для этого не подходят. Напишите свой класс, который будет точно хранить десятичные знаки или возьмите готовую реализацию. Пример запроса для поиска: http://www.google.ru/search?q=C%2B%2B+BigDecimal
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.