DECIMAL类型的sign成员,取值范围是什么?
我做了一个实验,两个DECIMAL相加的时候,如果不指定sign,那么就是正数加法。
如果设置sign为一个负数,那么看起来并没有用,并不能把d2这个变量标记成一个负数
#include<wtypes.h>
#include<oleauto.h>
void main()
{
DECIMAL d1;
d1.Lo32=20;
d1.Hi32=10;
DECIMAL d2;
d2.sign=-10;//sign设置为一个负数,我期待d2变成一个负数
d2.Lo32=5;
DECIMAL result;
VarDecAdd(&d1,&d2,&result);
return;
}
结果是result.Lo32=25。这个并不是我想要的。
所以我的问题是:
(1)如何才能让d2.sign起作用?
(2)结果当中的result.Hi32竟然等于3435973847。我期待他等于10,也就是d1.Hi32。
是不是我对于DECIMAL的理解还有错误呢?
请指点!
[解决办法]
scale好象是小数点后的位数,是为了提高精度的。
[解决办法]
http://msdn.microsoft.com/zh-cn/LIBRARY/bb1c1a6x(v=vs.90).aspx
decimal 的构造函数说的清楚了
int lo,
int mid,
int hi,
bool isNegative,
byte scale