║XLR8║
|
||||||
1 | ||||||
Вывод long double с используя printf()05.01.2010, 22:44. Показов 52503. Ответов 26
Метки нет (Все метки)
0
|
05.01.2010, 22:44 | |
Ответы с готовыми решениями:
26
Тип long long и его ввод\вывод с использованием scanf\printf Вывод long double Вывод константы long double Чем различаются long long и long double? |
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
|
06.01.2010, 04:01 | 2 |
там просто %Lf для long double потому что она для float и double юзает %f
Код
* An optional h specifying that a following d , i , o , u , x , or X conversion specifier applies to a short int or unsigned short int argument (the argument will have been promoted according to the integral promotions, and its value shall be converted to short int or unsigned short int before printing); an optional h specifying that a following n conversion specifier applies to a pointer to a short int argument; an optional l (ell) specifying that a following d , i , o , u , x , or X conversion specifier applies to a long int or unsigned long int argument; an optional l specifying that a following n conversion specifier applies to a pointer to a long int argument; [B]or an optional L specifying that a following e , E , f , g , or G conversion specifier applies to a long double argument. If an h , l , or L appears with any other conversion specifier, [COLOR="Red"]the behavior is undefined[/COLOR].[/B] то было для C89 а это для C99 Код
l (ell) Specifies that a following d, i, o, u, x, or X conversion specifier applies to a long int or unsigned long int argument; that a following n conversion specifier applies to a pointer to a long int argument; that a following c conversion specifier applies to a wint_t argument; that a following s conversion specifier applies to a pointer to a wchar_t argument; or has no effect on a following a, A, e, E, f, F, g, or G conversion specifier. в его же книге более новой (полный справочник по C, с супер примерами, в которых утечки памяти и прочее подобное нормально) написано уже как в стандарте, что l не даст никакого результата
1
|
Maniac
|
|
06.01.2010, 11:34 | 4 |
1
|
║XLR8║
|
||||||
06.01.2010, 11:51 [ТС] | 5 | |||||
немного не то, мне надо 3 знака после запятой, в случае если там целое оно откидает нули слева..
Добавлено через 14 секунд
0
|
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
|
||||||
06.01.2010, 12:13 | 6 | |||||
Сообщение от outoftime
1
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|||||||||||
07.01.2010, 10:41 | 7 | ||||||||||
А вообще для long double следует писать "%Lf"
1
|
║XLR8║
|
||||||
07.01.2010, 11:41 [ТС] | 8 | |||||
Добавлено через 38 секунд кроме того, что-то не так с возвратом функции, это я уже понял..
0
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
07.01.2010, 12:17 | 9 |
Если вводишь через scanf, так он и не вводит в тип double, только во float.
1
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
07.01.2010, 18:14 | 10 |
При передаче в printf() происходит преобразование: float -> double, всех типов меньше чем int -> int Поэтому printf() всегда получает только double, int (ну и другие большие типы). Добавлено через 1 минуту scanf() работает немного иначе: scanf( "%f", &float ); scanf( "%lf", &double ); Добавлено через 1 минуту Для полноты: printf( "%f", double ); printf( "%Lf", long double ) printf( "%f", float ); // тут происходит преобразование float -> double Добавлено через 1 минуту Во - нашел еще: scanf( "%Lf", &long_double );
3
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
07.01.2010, 18:20 | 12 |
outoftime, ты не знаешь какой тип возвращает функция ?
0
|
║XLR8║
|
|
07.01.2010, 18:30 [ТС] | 13 |
а вы протестите прогу у себя, введите два числа:
10 6 и сами увидите, сразу поймете что за тип)) это я его придумал)) Добавлено через 3 минуты http://codepad.org/kTiIVTHX
0
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
||||||
07.01.2010, 18:51 | 14 | |||||
Код
> thread82884.exe var1 var3 var5 n=10 r=6 sq=3.31662479035539980000 t1=66.33249580710798900000 t2=-1.29156197588849950000 t3=-1.#IND0000000000000000 t4=-1.#IND0000000000000000 res=-1.#IND0000000000000000 -1.#IO
1
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
||||||
07.01.2010, 18:52 | 15 | |||||
outoftime, Если ввести 10 и 6 то вот здесь:
1
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
07.01.2010, 18:56 | 16 |
acos( -1.29 ) как-то не считается почему-то ))
Добавлено через 1 минуту Неправильно ! acos( x ) считается, если abs( x )<=1
1
|
1674 / 1046 / 174
Регистрация: 27.09.2009
Сообщений: 1,945
|
|
07.01.2010, 18:57 | 17 |
Диапазон допустимых значений аргумента для арккосинуса от -1 до 1.
Искренне ваш, Капитан Очевидность.
1
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
07.01.2010, 18:58 | 18 |
И кстати компилятор у меня ругался на printf(), пока не добавил #include <stdio.h>
1
|
4727 / 2548 / 757
Регистрация: 18.08.2009
Сообщений: 4,568
|
|
07.01.2010, 19:02 | 19 |
1
|
7175 / 3234 / 81
Регистрация: 17.06.2009
Сообщений: 14,164
|
|
07.01.2010, 19:10 | 20 |
Еще раз: аргумент у acos() примерное -1.29
Поэтому и не считает.
1
|
07.01.2010, 19:10 | |
07.01.2010, 19:10 | |
Помогаю со студенческими работами здесь
20
Printf ошибка вывода long double (dev c++) Вывод long double Неверный вывод long double Почему перестает работать программа при замене double на long double? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |