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

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

Войти
Регистрация
Восстановить пароль
 
colya
0 / 0 / 0
Регистрация: 04.02.2013
Сообщений: 12
#1

Маленькая мантисса long double - C++

04.02.2013, 00:28. Просмотров 937. Ответов 3
Метки нет (Все метки)

здрасте. Я использую pow (long double, long double) и не смотря на это, меня не удовлетворяет точность (не более 5ти знаков после запятой). А нужно как раз-таки 6. Есть ли какое-то простое решение? Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
04.02.2013, 00:28     Маленькая мантисса long double
Посмотрите здесь:

Порядок и мантисса параметра типа double - C++
Задача из Страуструпа функция печатающая порядок и мантиссу параметра типа double Ну мантисса это вроде бы понятно...

Long Double - C++
Разве нет типа более емкого, чем Double в Visual studio? Long Double, как я понял, определяется как обычный Double. А мне нужен аналог по...

Long double и Borland 3.1 - C++
обнаружено на процессоре 486SX с Borland 3.1, на нем экспонента считается до 4932, далее ошибка overflow DosBox+ core i7 на win7х64 +...

Перевод из double в long - C++
Можно ли как-то перевести число double в 2 числа long так, чтобы одно число было его целой частью, а другое дробной?

описание long double в С - C++
Подскажите как правильно ввести переменнуя типа long double в языке С integer-------------%d float----------------%f double...

Long double отображается не верно - C++
суть проблемы такова: решаю задачу где вводится некое значение long double, большое значение, которое в последствии переводится в string ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 715
04.02.2013, 02:06     Маленькая мантисса long double #2
есть, например манипулятор setprecision из <iomanip>


C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
#include <iomanip>
 
int main()
{
    double i = 0.112312312;
    using namespace std;
    cout << i << endl;
    cout << setprecision(10) << i << endl;
}
сей код вернёт вторым выводом 9 знаков полсе запятой double
есть аналогичный не манипулятор cout.precision
замечу, что просто cout.precision() вернёт текущую точность, которую в хорошем стиле хорошо бы сохранить в переменную, а потом вернуть назад в cout

так что хороший стиль будет
C++
1
2
3
4
5
6
7
int main()
{
   double i = 0.112312312;
    using namespace std;
   streamsize prec = cout.precision();
    cout << setprecision(10) << i << setprecision(prec)  << endl;
}
где вместо "10" в setprecision(10) пишите желаемое 7 (ибо если вам надо 6 знаков - то пишите 7)
а манипуплятор setprecision(prec) вернёт старую точность потоку назад)

можно обойтись и без манипуляторов просто
C++
1
2
3
 streamsize prec = cout.precision(7); // для точности 6 знаков после запятой
 cout << i << endl;
 сout.precision(prec);
Croessmah
Модератор
Эксперт CЭксперт С++
13057 / 7320 / 817
Регистрация: 27.09.2012
Сообщений: 18,066
Записей в блоге: 3
Завершенные тесты: 1
04.02.2013, 02:10     Маленькая мантисса long double #3
C++
1
2
3
4
   double i = 232.112312312;
    using namespace std;
   streamsize prec = cout.precision();
    cout << setprecision(10) << i << setprecision(prec)  << endl;
а так только 7 знаков выводит после запятой
а если
C++
1
double i = 235662.112312312;
то вообще только 4

Добавлено через 1 минуту
может так попробовать?
C++
1
cout << std::fixed <<setprecision(10) << i << setprecision(prec)  << endl;
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.02.2013, 02:30     Маленькая мантисса long double
Еще ссылки по теме:

Преобразование строки в long double - C++
Друзья, в Лафоре есть задача номер 7 в главе 7. Её суть: пользователь вводит строку, программа должна считывать только цифры и символ...

Вывод константы long double - C++
Доброго времени суток! Учусь программировать на С++ и возникла такая проблема: есть константа 6.626068E-034. я назначил тип long...

Shot int b long double - C++
есть задание нужно поменять местами значения бит в заданном количестве пар бит. Номера бит в парах задаются с клавиатуры. используя shot...

Str в long double и наоборот - C++
Пользуюсь Microsoft Visual Studio 2010 там такой &quot;_atold()&quot; функции нет. Пробовал &quot;atof()&quot; но она не работает с большими значениями типа...

Преобразование long double в char - C++
Вернемся к обсуждению денежных строк из упражнения 6. Напишите ме- од ldtoms() для преобразования числа типа long double в денежную строку,...

Перевод long double в строку - C++
Кто мне объяснит, почему тут long double последнюю цифру дробит... void ld_to_str(long double ld, char str) { double d1; d1 = ld;...


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

Или воспользуйтесь поиском по форуму:
abit
262 / 261 / 33
Регистрация: 03.02.2013
Сообщений: 715
04.02.2013, 02:30     Маленькая мантисса long double #4
Цитата Сообщение от Croessmah Посмотреть сообщение
C++
1
2
3
4
   double i = 232.112312312;
    using namespace std;
   streamsize prec = cout.precision();
    cout << setprecision(10) << i << setprecision(prec)  << endl;
а так только 7 знаков выводит после запятой
а если
C++
1
double i = 235662.112312312;
то вообще только 4

Добавлено через 1 минуту
может так попробовать?
C++
1
cout << std::fixed <<setprecision(10) << i << setprecision(prec)  << endl;
ну там же манипулятор выдаёт не цифры после запятой, а только количество цифр, пишите c_count(trunc(c))+p, где p - желаемое число цифер после запятой, я думаю автору этой инфы хватит по горло
попробуйте так, я не против )
Yandex
Объявления
04.02.2013, 02:30     Маленькая мантисса long double
Ответ Создать тему
Опции темы

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