У меня есть значение с плавающей точкой в Variant, изначально этот вариант имеет тип bstr.
Я использую VariantChangeType , чтобы перейти к типу с плавающей точкой. а затем я получаю значение с плавающей запятой от него, а затем я преобразую в формат байтового вектора.
Если вариант имеет значения с плавающей запятой, это работает нормально.
Если вариант имеет значения INF , VariantChangeType завершится неудачно. Так что я получаю 0 от варианта.fltVal.
Как поменять тип на плавающий, если вариант имеет значения INF или NAN? Я хочу получить значения INF или NAN в формате float.
Convert(_variant_t varVal,vector<byte> dataArr)
{
HRESULT hr = VariantChangeType( varVal&, &varVal, 0 , VT_R4 );
// Above code is failing if varVal.bstr contains 1.#INF" values
UINT size = 4;
if ( data && dataItem.vt != VT_EMPTY )
{
float value = dataItem.fltVal;
BYTE tmpBuf[4];
memcpy(tmpBuf, &value, sizeof(value));
for( int i = size - 1 ; i >= 0 ; i-- )
{
data->push_back(tmpBuf[i]);
}
retVal = TRUE;
}
}