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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Ошибка точности - C++

07.10.2013, 07:21. Просмотров 294. Ответов 6
Метки нет (Все метки)

Некоторая double переменная x равна 3.4. Домножив её на 1000, я получил 3400 (printf говорит, что всё верно), затем приведя её к типу int я получил (3399).. Я понимаю, точностью цифровая техника обделена, но я никогда не видел, чтобы точность терялась при приведении к int. Разве int не округляет вверх? Т.е. если бы даже было 3.9 или 4.1, то он бы дал 4?
double x = 3.4; //предположим инициализация была такая
C++
1
printf("%e\n%e\n%d\n", x, x * 1000, int(x * 1000));
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.10.2013, 07:21
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Ошибка точности (C++):

Не точности вычисления C++ - C++
double N=1.0100000000000000; N=(N-floor(N))*10; cout<<N; Выводит: 0.10000000000000009 - что ни есть правильно (добавляет 9 в...

Арифметика неограниченной точности - C++
Здравствуйте! Создаю класс BigInt для чисел больших int. Число разбивается на массив, где каждый его элемент - отдельный разряд входящего...

Вычисления до заданной точности - C++
Исправьте ошибку пожалуйста! #include <stdio.h> #include <math.h> #include <conio.h> int fact(int x) { if(x<=1) return 1; ...

Вычисление машинной точности - C++
Помогите пожалуйста!!! Есть такая задачка/ Требуется найти наибольшее а , такое что 1+а=1, кто-нибудь знает, как это можно сделать?

Потеря точности у double - C++
Салют! Ситуация следующая - есть необходимость работать с изображением, а точнее - с его градиентом/направлением градиента. Для...

Точности вычислений double - C++
Вот у меня возникла проблема при подсчете ряда тейлора в заданном интервале. Проблема заключается в том, что когда я ввижу интервал и...

6
newbie666
Заблокирован
07.10.2013, 08:09 #2
И ?
1
Миниатюры
Ошибка точности  
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.10.2013, 08:15  [ТС] #3
Тогда вопрос ещё лучше, почему 3.3999 может выдавать только у меня? Пытался скомпилить и cl, и mingw, ответ такой же
0
newbie666
Заблокирован
07.10.2013, 08:24 #4
Цитата Сообщение от nexen Посмотреть сообщение
Тогда вопрос ещё лучше, почему 3.3999 может выдавать только у меня?
Смени процессор ))))))))))))
0
Байт
Эксперт C
16355 / 10631 / 1592
Регистрация: 24.12.2010
Сообщений: 20,279
07.10.2013, 09:16 #5
Цитата Сообщение от nexen Посмотреть сообщение
Разве int не округляет вверх?
Нет. (int) округляет именно вниз.
1
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
07.10.2013, 09:20  [ТС] #6
Байт, иначе говоря, отбрасывает дробную часть? Ладно, даже если так, но x * 1000 в printf вывело, как 3400, да и обычно при умножении погрешность идет в +1E-400, а не -1E-400
0
Байт
Эксперт C
16355 / 10631 / 1592
Регистрация: 24.12.2010
Сообщений: 20,279
07.10.2013, 09:32 #7
Цитата Сообщение от nexen Посмотреть сообщение
даже если так, но x * 1000 в printf вывело, как 3400,
А вот форматированный вывод (printf) округляет как положено. Часто этим пользуются для получения правильного округления.
C
1
2
sprintf(b, "%.0f", x*1000);
n = atoi(b);
1
07.10.2013, 09:32
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.10.2013, 09:32
Привет! Вот еще темы с ответами:

Вычисление точности числа - C++
Здравствуйте, прошу вас помочь мне разобраться с такой вот задачкой: Есть такое уравнение(прикрепил). Нужно её как-то ввести и при...

Точности вычислений и преобразований double - C++
Всем привет! Вопрос точности вычислений и преобразований double. Объясните пожалуйста следующее: Арифметические операции: ...

Ошибки точности на выводе в файл - C++
Здравствуйте, возникла такая ситуация - есть некая переменная-массив, выводится на экран (std::cout), и это диагональная матрица с эл-тами...

float и double (расчет точности) - C++
Всем привет, а есть какой-нибудь алгоритм по расчету точности типов float и double а то прочитал, чтобы получить точность типа double...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru