四舍五入取精度

#include <sstream>
#include <iomanip>

//精度取三位
 std::stringstream  ssPanPos;
 double dSrcPanPos = 0;
 ssPanPos << setiosflags(ios::fixed) << setprecision(3) << dSrcPanPos;
 double fPanPos = boost::lexical_cast<double>(ssPanPos.str());


 //精度取三位
 std::stringstream  ssTiltPos;
 double dSrcTiltPos = 1.31722E-43;
 ssTiltPos << setiosflags(ios::fixed) << setprecision(3) << dSrcTiltPos;
 double dTiltPos = boost::lexical_cast<double>(ssTiltPos.str());


注意事项

1)一旦设置了stringstream的setiosflags属性,就不能再次设置和使用,因此才会使用了另外一个对象保存


比较

        两个相近的浮点数之间在某一个精度范围内,认为是相等的

例如  double a = 0.10001;  double b = 0.1; 两个小数进行比较,精度在0.0000001

方案

        通过采用if ( fabs(a-b) < 1e-7), 说明a,b是比较的两个数字,1e-7用小数表示0.0000001