Что такое LDOUBLE? Как преобразовать строку в long double?
От: erslgoeirjh Россия http://russianfellow.livejournal.com
Дата: 24.12.09 13:41
Оценка:
Есть строка s, считанная из файла, содержащая вещественное число.
Как мне её преобразовать в тип long double?

Есть функция long double _atoldbl(LDOUBLE* ldblval, char* s) для преобразования строки в тип long double. Но что такое тип LDOUBLE и как его преобразовать в тип long double?
Пу и Ме сидели на трубе...
Re: Что такое LDOUBLE? Как преобразовать строку в long doubl
От: посетитель /life/  
Дата: 24.12.09 14:21
Оценка:
Здравствуйте, erslgoeirjh, Вы писали:

E>Есть строка s, считанная из файла, содержащая вещественное число.

E>Как мне её преобразовать в тип long double?

E>Есть функция long double _atoldbl(LDOUBLE* ldblval, char* s) для преобразования строки в тип long double. Но что такое тип LDOUBLE и как его преобразовать в тип long double?


Почему вы используете long double, а не double? Начнем с этого вопроса.

_LDOUBLE это вот что
#ifndef _LDSUPPORT

#pragma pack(4)
typedef struct {
    unsigned char ld[10];
} _LDOUBLE;
#pragma pack()

#define _PTR_LD(x) ((unsigned char  *)(&(x)->ld))

#else

/* push and pop long, which is #defined as __int64 by a spec2k test */
#pragma push_macro("long")
#undef long
typedef long double _LDOUBLE;
#pragma pop_macro("long")

#define _PTR_LD(x) ((unsigned char  *)(x))

#endif

То есть _LDOUBLE это либо 10-байтовая структура (а sizeof(long double) на VC равен 8 байт), либо и есть long double.
Re[2]: Что такое LDOUBLE? Как преобразовать строку в long do
От: erslgoeirjh Россия http://russianfellow.livejournal.com
Дата: 24.12.09 14:26
Оценка:
Здравствуйте, посетитель /life/, Вы писали:

ПL>Здравствуйте, erslgoeirjh, Вы писали:


E>>Есть строка s, считанная из файла, содержащая вещественное число.

E>>Как мне её преобразовать в тип long double?

E>>Есть функция long double _atoldbl(LDOUBLE* ldblval, char* s) для преобразования строки в тип long double. Но что такое тип LDOUBLE и как его преобразовать в тип long double?


ПL>Почему вы используете long double, а не double? Начнем с этого вопроса.


Захотелось мне. Для более точных расчётов.
Пу и Ме сидели на трубе...
Re[3]: Что такое LDOUBLE? Как преобразовать строку в long do
От: посетитель /life/  
Дата: 24.12.09 14:34
Оценка:
Здравствуйте, erslgoeirjh, Вы писали:

ПL>>Почему вы используете long double, а не double? Начнем с этого вопроса.


E>Захотелось мне. Для более точных расчётов.


Если не можете точно сформулировать зачем, то надо использовать double. Кстати, на Visual Studio (судя по упоминанию функции _atoldbl вы используете ее) размер double и long double совпадает. Так что в точности выигрыша нет.
Re[4]: Что такое LDOUBLE? Как преобразовать строку в long do
От: Tujh Голландия  
Дата: 25.12.09 03:59
Оценка:
Здравствуйте, посетитель /life/, Вы писали:
ПL>Кстати, на Visual Studio (судя по упоминанию функции _atoldbl вы используете ее) размер double и long double совпадает. Так что в точности выигрыша нет.
А это уже старая "фича" компиляторов от MS, они не поддерживают long double, и по сути этот тип является typedef для обычного double.
In Win32 programming, however, the long double data type maps to the double, 64-bit precision data type. The Microsoft run-time library provides long double versions of the math functions only for backward compatibility. The long double function prototypes are identical to the prototypes for their double counterparts, except that the long double data type replaces the double data type. The long double versions of these functions should not be used in new code.
http://msdn.microsoft.com/ru-ru/library/9cx8xs15.aspx
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.