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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.98
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
#1

Как задать точность округления в среде разработки? - C++

16.01.2011, 22:48. Просмотров 6461. Ответов 8
Метки нет (Все метки)

Недавно столкнулся с тем, что любая переменная вещественного типа при инициализации и выводе этой же переменной на экран отображается лишь с шестью знаками. К примеру, если присвоить х = 10900.0905, то на экран выведется 10900.1 Интереса ради, завел переменную y=10900 и вычел ее из x (все переменные типа float). И, что бы вы думали, получилось? z=x-y = 0.0908203 Хотя результат уже почему-то до 6 знаков не округлился... Но вот если уже вместо float использовать double, то получится 0.0905, как и полагается, хотя x при первом выводе всё же округляется.
В общем понятно только то, что здесь что-то не то... то ли числа действительно округляются, то ли отображаются их округленные значения. А где это настраивается - так и не нашел... (Использую Embarcadero RAD Studio 2010)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.01.2011, 22:48     Как задать точность округления в среде разработки?
Посмотрите здесь:
Каковая точность округления? C++
Как задать точность? C++
Как задать максимальную точность? C++
C++ О среде разработки
C++ Символы и длина имён в среде разработки
Как избавиться от округления C++
C++ Как убрать округления
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
682 / 584 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
16.01.2011, 23:01     Как задать точность округления в среде разработки? #2
никак не настраивается, читай про типы данных, их точность и вывод
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
17.01.2011, 10:14     Как задать точность округления в среде разработки? #3
Bredorub, тип float дает очень плохую точность. Надо использовать double. Тем более все математические функции все равно приводят float к double.
Для управлением округлением в printf используется формат "%10.3f". Работает грамотно.
При выводе через cout есть манипулятор precision. Как работает не знаю - не пользуюсь
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
17.01.2011, 10:18  [ТС]     Как задать точность округления в среде разработки? #4
Где-то вычитал, что тип float по дефолту выводит лишь 6 значащих цифр. Почему тогда doulble тоже 6 цифр выводит когда должен выводить как минимум 10? Кстати, в Microsoft Visual Studio это вроде как настраивается, значит должно и в Embarcadero.
Josefina
11 / 11 / 1
Регистрация: 27.09.2010
Сообщений: 32
17.01.2011, 10:22     Как задать точность округления в среде разработки? #5
Если я правильно понимаю о чем речь)

Типы данных вещественных чисел, их точность и отличия:
Для хранения вещественных чисел в C++ используется два типа: float и double. При этом float занимает 4 байта, а double - 8.
Диапазон значений float: 1,4 * 10^-45.. 3.4 * 10^38
Диапазон значений double: 4,94 * 10^-324.. 1.79 * 10^308


Форматированный вывод на экран:
Код
int printf(const char *format [,argument]...);
Пример:
float х=2.33333333333333333333333

printf("%.1f", x);
на экран выведет: 2.3

printf("%.5f", x);
на экран выведет: 2.33333

printf(" %.2e ", x);
на экран выведет: 2.33e+000
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 10:49     Как задать точность округления в среде разработки? #6
Bredorub, да почему вы считаете, что это где-то в среде разработки настраивается? А если я через консоль компилирую - что, не видать мне больше 6 цифр? Это дело программы, а не среды - сколько цифр выводить. И решается это программно.
Bredorub
5 / 5 / 0
Регистрация: 16.01.2011
Сообщений: 94
17.01.2011, 12:26  [ТС]     Как задать точность округления в среде разработки? #7
silent_1991, хм... ну мне всегда казалось, что было бы проще один раз выставить это дело в опциях чем каждый раз задавать параметры округления программно.
silent_1991
Эксперт С++
4961 / 3037 / 149
Регистрация: 11.11.2009
Сообщений: 7,027
Завершенные тесты: 1
17.01.2011, 12:27     Как задать точность округления в среде разработки? #8
Bredorub, хм... Ну, видимо, это только вам так казалось, потому что пока никто этого делать не стал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 12:45     Как задать точность округления в среде разработки?
Еще ссылки по теме:
C++ как избавиться от округления float
C++ Как избежать округления дробных чисел
C++ Как отбросить сотые без округления?
C++ Как избежать округления дробных чисел
C++ как добавить точность эпсилон

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

Или воспользуйтесь поиском по форуму:
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
17.01.2011, 12:45     Как задать точность округления в среде разработки? #9
Bredorub, Все в твоих руках.
Создай хедер bred.h, там напиши
C
1
#define BRED_PREC  %.10f
включай этот хедер во все свое исходники и в них пиши
C
1
printf("BRED_PREC\n", bred);
Yandex
Объявления
17.01.2011, 12:45     Как задать точность округления в среде разработки?
Ответ Создать тему
Опции темы

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