C ++将Variant Decimal转换为Double Value

时间:2014-07-22 15:34:13

标签: c++ double type-conversion decimal

我有一个包含来自数据库的DECIMAL值的_variant_t变量。

问题是,当我尝试将其直接转换为double类型时,我得到一个未定义的值。

例如,我有一个十进制值= 1000.111

_varaint_t MyVar = getValueFromDatabase();        // MyVar is a decimal value = 1000.111
double MyDouble = (double) MyVar.dblVal;

cout << MyDouble << endl;         // Prints "4.941204871279e-318#DEN"

在C ++中将Decimal转换为Double的正确方法是什么?


更新:

当我尝试这个时,

_varaint_t MyVar = getValueFromDatabase();        
double MyDouble = (double) MyVar.decVal;

我收到编译错误:

No suitable conversion function from "DECIMAL" to "double" exists

1 个答案:

答案 0 :(得分:2)

_variant_t已经提供了正确的转换运算符,因此您无需直接引用.dblVal或decVal(请参阅此处:http://msdn.microsoft.com/en-us/library/ew0bcz27.aspx)。

所以你可以这样做:

_variant_t MyVar = getValueFromDatabase();
double myDouble = MyVar;

如有必要,转换运算符将调用VariantChangeType。