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

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

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

Вывести long double число без перевода в double - C++

25.01.2014, 21:57. Просмотров 1073. Ответов 17
Метки нет (Все метки)

Надо вывести long double число без перевода в double. Пишу:
C++
1
printf("%Lf",S);
и выводится неверно. Компилятор -- MinGW, та же фишка на VS работала. Что же делать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.01.2014, 21:57
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вывести long double число без перевода в double (C++):

Почему перестает работать программа при замене double на long double? - C++
Здравствуйте! Прошу помощи чтобы разобраться в следующем вопросе: Нашел программу в интернете, запустил - все работает, но когда решил...

long double и double в MSVC 12 одно и тоже, нужна информация,желательно быстрей - C++
Здравствуйте все знают что в VC long double и double одно и тоже, да и при простой проверке это легко выясняется, но нужна информация от...

Ошибки error C2296: -: недопустимо, левый операнд имеет тип "double (__cdecl *)(double,double,double - C++
Думаю из-за polp #include<iostream> #include<cmath> #include<cstdlib> using namespace std; double polp(double af,double...

Double, int , long double - C++
Как вычислить диапазоны типов вручную указанных в название темы?

Ошибка: error LNK2001: unresolved external symbol "double __cdecl Akk(double,double,double)" - C++
#include <iostream> #include <cmath> using namespace std; double Akk(double x, double y, double z); int main() { int a, b, c; ...

Преобразовать 2 числа int в 1 число float(double) | double int1.int2 - C++
Всем привет. Изучая азы C++, столкнулся с такой проблемой. Есть два значения типа int, их необходимо преобразовать в одно значение типа...

17
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
25.01.2014, 22:01 #2
А если добавить "-D__USE_MINGW_ANSI_STDIO" к опциям компиляции ?
0
HEDO4EJIOBEK
1 / 1 / 0
Регистрация: 12.11.2013
Сообщений: 11
25.01.2014, 22:12  [ТС] #3
Не помогает.
То же самое:
warning: unknown conversion type character 'L' in format
0
nikolay1982
117 / 117 / 43
Регистрация: 22.01.2014
Сообщений: 375
25.01.2014, 22:22 #4
На gcc дожно было сработать.
А вот так вы не пробывали?
C++
1
2
    long double S=3.14;
    cout<<"S:"<<S;
0
HEDO4EJIOBEK
1 / 1 / 0
Регистрация: 12.11.2013
Сообщений: 11
25.01.2014, 22:26  [ТС] #5
Нет, там надо с определённой точностью, чего iostream, вроде бы, не может.
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
25.01.2014, 22:32 #6
Цитата Сообщение от HEDO4EJIOBEK Посмотреть сообщение
чего iostream, вроде бы, не может.
а разве precision - это не то?

Добавлено через 1 минуту
http://www.cplusplus.com/reference/iomanip/setprecision/
0
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,247
Записей в блоге: 1
25.01.2014, 22:40 #7
Не в курсе, форматная строка принтф разве не требует именно строчные буквы %lf ?
А для потоков iostream надо использовать setprecision.
0
HEDO4EJIOBEK
1 / 1 / 0
Регистрация: 12.11.2013
Сообщений: 11
25.01.2014, 22:41  [ТС] #8
Нет, совсем не то. Если поставить, например, на 7, то при выводе «444.4444444», то выведется «444.4444», а нужно фиксированное количество знаков после запятой.
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.01.2014, 22:43 #9
Цитата Сообщение от HEDO4EJIOBEK Посмотреть сообщение
Нет, совсем не то. Если поставить, например, на 7, то при выводе <<444.4444444>>, то выведется <<444.4444>>, а нужно фиксированное количество знаков после запятой.
Перед этим нужно применить манипулятор std::fixed
C++
1
2
std::cout.precision(4);
    std::cout << std::fixed << 3.3333333333 << std::endl;
0
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,247
Записей в блоге: 1
25.01.2014, 22:45 #10
printf("%.7lf", ...
0
HEDO4EJIOBEK
1 / 1 / 0
Регистрация: 12.11.2013
Сообщений: 11
25.01.2014, 22:46  [ТС] #11
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Не в курсе, форматная строка принтф разве не требует именно строчные буквы %lf ?
Нет, по крайней мере, в MinGW для long double требуется именно «%Lf».
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
А для потоков iostream надо использовать setprecision.
Нет, совсем не то. Если поставить, например, на 7, то при выводе «444.4444444», то выведется «444.4444», а нужно фиксированное количество знаков после запятой[2].
0
gromo
371 / 270 / 24
Регистрация: 04.09.2009
Сообщений: 1,214
25.01.2014, 22:47 #12
Цитата Сообщение от HEDO4EJIOBEK Посмотреть сообщение
чего iostream, вроде бы, не может.
да иострим и не такое может, уж поверьте
0
KOPOJI
Эксперт HTML/CSSЭксперт PHP
16701 / 6623 / 433
Регистрация: 12.06.2012
Сообщений: 19,880
Завершенные тесты: 1
25.01.2014, 22:48 #13
Kuzia domovenok, не везде, как видите.. http://stackoverflow.com/questions/4089174/printf-and-long-double
From the printf manpage:

l (ell) A following integer conversion corresponds to a long int or unsigned long int argument, or a following n conversion corresponds to a pointer to a long int argument, or a following c conversion corresponds to a wint_t argument, or a following s conversion corresponds to a pointer to wchar_t argument.

and

L A following a, A, e, E, f, F, g, or G conversion corresponds to a long double argument. (C99 allows %LF, but SUSv2 does not.)

So, you want %Le , not %le
...........
Yes -- for long double, you need to use %Lf (i.e., upper-case 'L').
0
Kuzia domovenok
1951 / 1804 / 140
Регистрация: 25.03.2012
Сообщений: 6,247
Записей в блоге: 1
25.01.2014, 23:14 #14
KOPOJI, мда, и где тут логика? Зачем делать l для длинных целых, а L для длинных даблов? Неужели реализация printf не поймёт, что, увидев в форматной строке %l, надо просто проверить следующий символ: lf или ld, чтобы определить тип аргумента!
0
KOPOJI
25.01.2014, 23:15     Вывести long double число без перевода в double
  #15

Не по теме:

Kuzia domovenok, а я же откуда знаю, где тут логика.. Спросите у разрабов MinGW..

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.01.2014, 23:15
Привет! Вот еще темы с ответами:

Напишите программу, которая получает число типа long double и выводит его целую и дробную части - C++
мое решение #include&lt;stdio.h&gt; #include&lt;math.h&gt; int main() { long double x;// = 23.234; scanf(&quot;%Lf&quot;, &amp;x); long...

Почему мы пишем double x (double y)? а не через запятую double x,y - C++
почему мы пишем double x (double y)? а не через запятую double x,y

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

Long float и double - C++
В чем отличие long float от double?


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

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

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