下面:
IMappingEngine
输出:
private IMappingEngine_mapper;
public RssLocalRepository(IMappingEnginemapper)
{
_mapper = mapper;
}
为什么输出不是277499.84?
答案 0 :(得分:3)
这不是操作本身失去准确性,而是输出。
您可以使用I / O操纵器std::setprecision
来控制数字精度。以下将使用double的完整精度(假设流设置为十进制输出)。
double value = boost::lexical_cast<double>(str);
std::cout << std::setprecision( std::numeric_limits<double>::digits10 + 1 ) << value;
或者您可以使用std::ios_base::precision
。如果要在之后将精度恢复为原始值,这非常有用。
auto old_precision = cout.precision( std::numeric_limits<double>::digits10 + 1 );
cout << value;
cout.precision( old_precision );