在ADO中如何把VT_DECIMAL类型的数据转化成double。

Ji秋风 2005-01-14 10:54:42
_variant_t var;
double val;

val = (double)var;

这样直接转换吗?今天我看到有代码不是这样转,不知正确的应该是怎样转换的。
...全文
382 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ji秋风 2005-01-14
  • 打赏
  • 举报
回复
VT_DECIMAL --> 16 byte fixed point
可以这样转化?
FlyNesta 2005-01-14
  • 打赏
  • 举报
回复
case VT_DECIMAL:
strValue.Format("%d",var.decVal );
break;
Ji秋风 2005-01-14
  • 打赏
  • 举报
回复
VT_DECIMAL 与 VT_R8 是不同的数据类型吧。
FlyNesta 2005-01-14
  • 打赏
  • 举报
回复
应该是类似VT_R8的转换
Ji秋风 2005-01-14
  • 打赏
  • 举报
回复
怎么没包含VT_DECIMAL转换成string的?
bohut 2005-01-14
  • 打赏
  • 举报
回复
给你一个函数可以将VARIANT型数据转成CString

CString VariantToCString(VARIANT var)
{
CString strValue;
_variant_t var_t;
_bstr_t bst_t;
time_t cur_time;
CTime time_value;
COleCurrency var_currency;
switch(var.vt)
{
case VT_EMPTY:
strValue=_T("");
break;
case VT_UI1:
strValue.Format("%d",var.bVal);
break;
case VT_I2:
strValue.Format("%d",var.iVal);
break;
case VT_I4:
strValue.Format("%d",var.lVal);
break;
case VT_R4:
strValue.Format("%f",var.fltVal);
break;
case VT_R8:
strValue.Format("%f",var.dblVal);
break;
case VT_CY:
var_currency = var;
strValue = var_currency.Format(0);
break;
case VT_BSTR:
var_t = var;
bst_t = var_t;
strValue.Format ("%s",(const char*)bst_t);
break;
case VT_NULL:
strValue = _T("");
break;
case VT_DATE:
cur_time = (long)var.date;
time_value = cur_time;
strValue = time_value.Format("%A,%B%d,%Y");
break;
case VT_BOOL:
strValue.Format("%d",var.boolVal );
break;
default:
strValue = _T("");
break;
}
return strValue;
}

。。。。。。
oyljerry 2005-01-14
  • 打赏
  • 举报
回复
直接double类型转换也可以

4,011

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧