
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.15.242.179] |
![]() |
|
Сообщ.
#1
,
|
|
|
Я пишу программу на 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) ? Если можно, то как это сделать? |
Сообщ.
#2
,
|
|
|
Нет, нельзя. Переменные с плавающей точкой могут точно представить далеко не все числа. Объяснение. Еще одно (см. параграф "константы")
|
Сообщ.
#3
,
|
|
|
Для начала посмотрите чем сейчас long double отличается от double.
Не пользуйтесь любыми разновидностями scanf. И если вам нужна такая точность то нужно использовать не стандартные решения. Они будут более медленными. |