Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Функция округления double - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Определить, попадает ли точка в заштрихованную область http://www.cyberforum.ru/cpp-beginners/thread149423.html
Попадает ли точка в заштрихованную область Примечание:Если точка попадает в заштрихованную область верхнего то треугольник движется по диагонали вверх и уменьшется, а если нижнего то вниз и...
C++ Одномерный массив в с++ 1.подготовить тексТовый файл с выходными данными в редакторе. 2. составить алгоритм программы 3.разбить программу на функции вывода , обработки . ввода выполнить обработку в соответствии с... http://www.cyberforum.ru/cpp-beginners/thread149415.html
Мат. програмирование. контрольная C++
1. Даны координаты трех точек на плоскости. Если они могут быть вершинами разностороннего треугольника, то вывести в порядке возрастания длины сторон полученного треугольника. Составить блок-схему и...
Переделать код из типа char в тип string C++
Прошу, помогите переделать код из типа char в тип string... В char'е все работает, но из-за незнания стринга не могу решить. Изначальная постановки задачи: "Исправить слово internet на слово...
C++ Алгоритмы вставки и выбора в С++ http://www.cyberforum.ru/cpp-beginners/thread149393.html
Алгоритмы вставки и выбора в С++
C++ Текст в файле. удаление. Кто сможет, помогите, дано предложение: Влиятель ощущает невыразимое, пальцы его мнут и мнут глину. Нужно удалить: и мнут. Помогите, как это удалить из файла или вообще как удалить. Я вывожу текст из... подробнее

Показать сообщение отдельно
ValeryS
Модератор
6654 / 5063 / 470
Регистрация: 14.02.2011
Сообщений: 16,934
27.10.2013, 13:00
Цитата Сообщение от grizlik78 Посмотреть сообщение
Проблема в том, что переменные double не могут сохранить число 0.015 абсолютно точно. Число, которое хранится в переменной будет немного меньше, где-то 0.01499999999999999944489, или около того. И если это число округлять до сотых, то на самом деле должно получится 0.01, но ведь мы задавали другое число изначально, и то число должно округлится к 0.02. Отсюда и возникает желание округлять последовательно с самого младшего разряда. Но задача эта принципиально не имеет решения, поскольку информация о точном числе при представлении типом double уже потеряна и невозможно отличить число 0.015 от числа 0.01499999999999999944489, а ведь они при округлении должны дать разный результат.
тема эта уже поднималась в
Округление числа в C++Builder
посмотри наш спор с Evg,
действительно в doudle нельзя представить точную конечную десятичную дробь, если она не степень двойки
поэтому приходится или вводить погрешность или менять алгоритм
например можно сначала умножить на 15 а потом разделить на 1000
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru