Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2015, 19:48   #1
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию ostream::operator<<() принцип округления

Добрый день.
По каким правилам округляются бесконечные дроби? Поясню примером:
Код:
#include <iomanip>
int main()
{
    double d = 0.3;
    std::cout << std::fixed << std::setprecision(20) << d << '\n';
    std::cout << std::fixed << std::setprecision(7) << d; 
    return 0;
}
0.29999999999999999000
0.3000000
Интересует хотя бы примерный алгоритм.
220Volt вне форума Ответить с цитированием
Старый 24.04.2015, 20:01   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Я сейчас наверное скажу банальщину но: Почему бы не заглянуть в дизассемблированный код? что там используется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.04.2015, 20:08   #3
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Я сейчас наверное скажу банальщину но: Почему бы не заглянуть в дизассемблированный код? что там используется.
Жёсткий способ, да и вряд ли будет понятно.

Немного подумал, наверное что-то вроде:
intval = (d + epsilon) * 10 ^ precision
Далее печатаем и выставляем запятую.
220Volt вне форума Ответить с цитированием
Старый 24.04.2015, 23:20   #4
220Volt
Форумчанин
 
Регистрация: 14.12.2012
Сообщений: 668
По умолчанию

Я всё усложняю, обычное округление типа round(d * 10 ^ precision). Вопросов больше не имею.
220Volt вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
operator char*() + operator[](uint) riden Общие вопросы C/C++ 3 17.02.2013 08:45
не перегружается ostream& operator<<(ostream &, Card&) Antej Общие вопросы C/C++ 2 17.12.2012 14:02
ошибка: no match for ‘operator<<’ in ‘std::operator<< [with _Traits = std::char_traits<char> Critter Общие вопросы C/C++ 5 08.08.2010 23:38
Функция округления Алена-2009 Microsoft Office Excel 2 07.05.2010 14:13
Отключение округления Averess Microsoft Office Excel 2 13.02.2009 12:34