四舍五入取精度
#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