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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 47, средняя оценка - 4.98
Bredorub
4 / 4 / 0
Регистрация: 16.01.2011
Сообщений: 90
16.01.2011, 22:48     Как задать точность округления в среде разработки? #1
Недавно столкнулся с тем, что любая переменная вещественного типа при инициализации и выводе этой же переменной на экран отображается лишь с шестью знаками. К примеру, если присвоить х = 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++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
16.01.2011, 23:01     Как задать точность округления в среде разработки? #2
никак не настраивается, читай про типы данных, их точность и вывод
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
17.01.2011, 10:14     Как задать точность округления в среде разработки? #3
Bredorub, тип float дает очень плохую точность. Надо использовать double. Тем более все математические функции все равно приводят float к double.
Для управлением округлением в printf используется формат "%10.3f". Работает грамотно.
При выводе через cout есть манипулятор precision. Как работает не знаю - не пользуюсь
Bredorub
4 / 4 / 0
Регистрация: 16.01.2011
Сообщений: 90
17.01.2011, 10:18  [ТС]     Как задать точность округления в среде разработки? #4
Где-то вычитал, что тип float по дефолту выводит лишь 6 значащих цифр. Почему тогда doulble тоже 6 цифр выводит когда должен выводить как минимум 10? Кстати, в Microsoft Visual Studio это вроде как настраивается, значит должно и в Embarcadero.
Josefina
 Аватар для Josefina
10 / 10 / 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
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 10:49     Как задать точность округления в среде разработки? #6
Bredorub, да почему вы считаете, что это где-то в среде разработки настраивается? А если я через консоль компилирую - что, не видать мне больше 6 цифр? Это дело программы, а не среды - сколько цифр выводить. И решается это программно.
Bredorub
4 / 4 / 0
Регистрация: 16.01.2011
Сообщений: 90
17.01.2011, 12:26  [ТС]     Как задать точность округления в среде разработки? #7
silent_1991, хм... ну мне всегда казалось, что было бы проще один раз выставить это дело в опциях чем каждый раз задавать параметры округления программно.
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
17.01.2011, 12:27     Как задать точность округления в среде разработки? #8
Bredorub, хм... Ну, видимо, это только вам так казалось, потому что пока никто этого делать не стал.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.01.2011, 12:45     Как задать точность округления в среде разработки?
Еще ссылки по теме:

C++ Символы и длина имён в среде разработки
C++ Как избежать округления дробных чисел
C++ Как отбросить сотые без округления?

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

Или воспользуйтесь поиском по форуму:
Day
 Аватар для Day
1149 / 954 / 57
Регистрация: 29.10.2009
Сообщений: 1,384
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     Как задать точность округления в среде разработки?
Ответ Создать тему
Опции темы

Текущее время: 22:50. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru