我有一个包含来自数据库的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
答案 0 :(得分:2)
_variant_t已经提供了正确的转换运算符,因此您无需直接引用.dblVal或decVal(请参阅此处:http://msdn.microsoft.com/en-us/library/ew0bcz27.aspx)。
所以你可以这样做:
_variant_t MyVar = getValueFromDatabase();
double myDouble = MyVar;
如有必要,转换运算符将调用VariantChangeType。