2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Язык С, scanf и long double
Сообщение13.07.2018, 16:57 


16/10/14
482
Как с помощью функции scanf прочитать число типа long double в языке C ?
Содержательные попытки решения задачи:
Используется синтаксис C
scanf("%lf", &x);
считывает число типа double, но не long double. Кроме того проверены варианты: %Lf, %lF, %LF, %llf, %LLF - не помогают

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 17:05 
Заслуженный участник
Аватара пользователя


27/04/09
23806
Уфа
А что говорит документация?

-- Пт июл 13, 2018 19:10:00 --

Судя по всему, она говорит, что %Lf должно работать. Так что непонятно, почему у вас не сработало.

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 18:06 
Заслуженный участник
Аватара пользователя


01/09/13
1997
SpiderHulk в сообщении #1326531 писал(а):
считывает число типа double, но не long double

а между ними есть разница?

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 18:11 
Заслуженный участник
Аватара пользователя


16/07/14
2519
Москва
Geen в сообщении #1326543 писал(а):
а между ними есть разница?
Да, double обычно 64-битный, а long double - 80-битный.

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 18:14 
Заслуженный участник
Аватара пользователя


01/09/13
1997
mihaild в сообщении #1326547 писал(а):
Geen в сообщении #1326543 писал(а):
а между ними есть разница?
Да, double обычно 64-битный, а long double - 80-битный.

Не обязательно.

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 18:17 
Заслуженный участник
Аватара пользователя


16/07/14
2519
Москва
Geen в сообщении #1326549 писал(а):
Не обязательно.
mihaild в сообщении #1326547 писал(а):
обычно

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 18:18 
Заслуженный участник
Аватара пользователя


01/09/13
1997
https://en.wikipedia.org/wiki/Long_double

и вопрос-то был конкретно про случай ТС...

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 21:40 


16/10/14
482
arseniiv в сообщении #1326532 писал(а):
%Lf должно работать

И тем не менее не работает, точнее работает да не так как надо. Пытаясь вводить разные числа я обнаружил что в переменную $x$ всегда заносится значение $1,13303e-317$

===================================

Возможно дело в компиляторе Dew-C++, он предназначен, как следует из названия, для С++, а я пытаюсь писать на нём программы используя только средства языка С

-- 13.07.2018, 21:55 --

В компилятора Pelles C $%Lf$ в $scanf$ работает, вот только long double ничем не отличается от просто double

 Профиль  
                  
 
 Re: Язык С, scanf и long double
Сообщение13.07.2018, 22:08 
Заслуженный участник
Аватара пользователя


02/08/11
5159
SpiderHulk в сообщении #1326570 писал(а):
Dew-C++
Да, дело в нём, но не в том, что он плюсовый. Среда Dev-C++ использует gcc (часть MinGW) в качестве компилятора и майкрософтовскую рантайм-библиотеку. Они имеют разные взгляды на размер long double, что и влечёт означенную проблему. То есть это известный баг MinGW. На stackoverflow предлагают решение: #define __USE_MINGW_ANSI_STDIO перед #include <stdio.h>.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 9 ] 

Модераторы: Karan, PAV, Toucan, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group