Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Ответ
 
Опции темы Поиск в этой теме
Старый 02.02.2023, 14:54   #1
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 124
По умолчанию Как правильно преобразовать double в long double в программе на Qt Creator?

Я пишу программу на Qt Creator 4.12.2 .
У меня происходит считывание числовых значений из текстового файла:

Код:
double  dval1, dval2, dval3;
long double  ldval1, ldval2, ldval3;
//...
fgets(s,256,f);
sscanf(s,"%lf %lf %lf",&dval1,&dval2,&dval3);
ldval1 = dval1;
ldval2 = val2;
ldval3 = val3;
В результате чего у меня из этого файла считывается вещественное значение типа double равное, допустим, 1.23456789 , а после присвоения этого значения переменной типа long double вместо этого значения появляется значение равное, допустим, 1.234567890002468 .

Можно ли сделать так, чтобы в переменную типу long double попадало правильное значение (1.23456789), а не значение со "хвостом" (2468) ? Если можно, то как это сделать?
erslgoeirjh вне форума Ответить с цитированием
Старый 02.02.2023, 14:58   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 403
По умолчанию

а если сразу считывать long double?
Valick вне форума Ответить с цитированием
Старый 02.02.2023, 15:00   #3
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 684
По умолчанию

Ну вообще-то у таких чисел бывают такие хвосты. Почитайте про дробные числа и их хранение. Они хранятся не точно.
Cuprum5 вне форума Ответить с цитированием
Старый 02.02.2023, 15:39   #4
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 684
По умолчанию

Решением может быть точность eps = 0.00000001 для Вашего числа 1,23456789. Т.е. после точности все числа отбрасываются в программе.
Cuprum5 вне форума Ответить с цитированием
Старый 02.02.2023, 17:00   #5
erslgoeirjh
Форумчанин
 
Регистрация: 19.05.2009
Сообщений: 124
По умолчанию

И как в программе применить эту точность для числа типа long double ?
erslgoeirjh вне форума Ответить с цитированием
Старый 02.02.2023, 17:12   #6
Cuprum5
Форумчанин
 
Регистрация: 09.05.2017
Сообщений: 684
По умолчанию

Преобразуй число в строку и потом где единица дальше просто не смотри числа.
Cuprum5 вне форума Ответить с цитированием
Старый 03.02.2023, 06:55   #7
Алексей1153
фрилансер
Форумчанин
 
Регистрация: 11.10.2019
Сообщений: 849
По умолчанию

попправочка
Цитата:
Сообщение от erslgoeirjh Посмотреть сообщение
Я пишу программу на Qt Creator 4.12.2 C++.
Алексей1153 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц, летом дешевле!

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как преобразовать unsigned int в float, а unsigned long int в double? ivan.tiran Общие вопросы C/C++ 6 12.11.2017 20:16
Тип Long Double. (язак Си) ivan1492 Помощь студентам 4 08.05.2013 03:40
Отличие double и long double в Вижиал cover Общие вопросы C/C++ 1 14.10.2012 13:53
E2015 Ambiguity between 'std::log(double)' and 'std::log(long double)' Namolem Помощь студентам 3 02.04.2011 20:22
long double vs. double VoidMan Общие вопросы C/C++ 1 21.09.2009 18:45