【发布时间】:2015-10-28 16:41:36
【问题描述】:
我正在尝试为 ADO 编写一个包装器。
当VARIANT 类型为VT_DECIMAL 时,DECIMAL 是COM VARIANT 可以是一种类型。
我正在尝试将其放入 c 本机数据类型,并保留变量值。 似乎正确的类型是 long double,但我得到“没有合适的转换错误”。
例如:
_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++
-
c++,但我需要 c 本机数据类型。
-
我想你想要 C++ 简单类型。 C++ 不是“带类的 C”。
-
@Olaf A c 原生类型是可以放入
extern "c"方法的类型