本文整理汇总了C++中Double::changeSign方法的典型用法代码示例。如果您正苦于以下问题:C++ Double::changeSign方法的具体用法?C++ Double::changeSign怎么用?C++ Double::changeSign使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Double
的用法示例。
在下文中一共展示了Double::changeSign方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: _collectSumForFSubMt
/**
* @brief 汇总某个指定主目下的所有子目的余额
* @param fsub
* @param mt
* @param v
* @param dir
* @param vs
* @param dirs
*/
void StatUtil::_collectSumForFSubMt(FirstSubject* fsub, int mt, Double &sum, MoneyDirection &dir, QHash<int, Double> vs, QHash<int, MoneyDirection> dirs)
{
if(!fsub)
return;
QList<int> ids;
foreach(SecondSubject* ssub, fsub->getChildSubs())
ids<<ssub->getId();
foreach(int id, ids){
int key = id*10+mt;
if(!vs.contains(key))
continue;
Double v = vs.value(key);
if(dirs.value(key) == MDIR_D)
v.changeSign();
sum += v;
}
示例2: _verifyExtraUnity
/**
* @brief 验证主目余额与子目汇总后的余额是否一致
* @param isPre true:验证期初余额,false:验证期末余额
* @return
*/
bool StatUtil::_verifyExtraUnity(QStringList& errors, bool isPre)
{
QHash<int,Double> *f_pvs,*f_mvs,*s_pvs,*s_mvs;
QHash<int,MoneyDirection> *f_dirs,*s_dirs;
if(isPre){
f_pvs = &preFExa; f_dirs = &preFDir; f_mvs = &preFExaM;
s_pvs = &preSExa; s_dirs = &preSDir; s_mvs = &preSExaM;
}
else{
f_pvs = &endFExa; f_dirs = &endFDir; f_mvs = &endFExaM;
s_pvs = &endSExa; s_dirs = &endSDir; s_mvs = &endSExaM;
}
//1、验证原币余额
QHashIterator<int,Double> it(*f_pvs);
while(it.hasNext()){
it.next();
int fid = it.key()/10;
FirstSubject* fsub = smg->getFstSubject(fid);
if(!fsub)
continue;
int mt = it.key()%10;
Double sum; MoneyDirection s_dir,f_dir;
f_dir = f_dirs->value(it.key(),MDIR_P);
_collectSumForFSubMt(fsub,mt,sum,s_dir,*s_pvs,*s_dirs);
if(s_dir == MDIR_P && f_dir == MDIR_P)
continue;
if(((int)s_dir + (int)f_dir) == 0)
sum.changeSign();
if(sum != it.value())
errors<<QString(tr("%1原币余额不一致,相差:%2")).arg(fsub->getName())
.arg((sum - it.value()).toString2());
}
//2、验证本币余额
if(!errors.isEmpty())
return false;
return true;
}