Я пытаюсь написать обертку для ADO.Каков правильный тип в c C++ для хранения VT_DECIMAL COM?
DECIMAL
один тип COM VARIANT
может быть, когда VARIANT
тип VT_DECIMAL
.
Я пытаюсь поместить его в c родной тип данных и сохранить значение переменной. Кажется, что правильный тип длинный двойной, но я получаю «подходящую ошибку преобразования».
Например:
_variant_t v;
...
if(v.vt == VT_DECIMAL)
{
double d = (double)v; //this works but I'm afraid can be loss of data...
long double ld1 = (long double)v; //error: more then one conversion from variant to long double applied.
long double ld2 = (long double)v.decVal; //error: no suitable conversion function from decimal to long double exist.
}
Так что мои вопросы:
это совершенно безопасно использовать двойной хранить все возможные десятичные значения?
если нет, то как я могу преобразовать десятичную дробь в длинный двойной?
Как преобразовать десятичную строку в строку? (С помощью оператора < <,
sprintf
также хорош для меня)
C или C++? нет C \ C++ – NathanOliver
C++, но мне нужен собственный тип данных c. – SHR
Это уже ответили: http://stackoverflow.com/questions/24891663/c-converting-variant-decimal-to-double-value – GreatAndPowerfulOz