若是想要保留n位小数算法
根据C++官网上的解释,该函数没有指定的返回类型,而且该函数用于设定输出操做上的小数精确位。函数
而后返回值中解释:未指定返回值,这个函数仅用于数据流修改操做上。 学习
说了这么多,我想要表达的意思就是当咱们须要将精确后的小数保存(将a精确后保存赋值给b)起来的话,使用setprecision函数就不行了。orm
不要紧,别急,我这里有解决方法:blog
1.使用stringstream类ci
在这里咱们使用第一种方式,能够看到第一种用法解释是设置流的格式标志(format flag)为参数 fmtfl 的形式字符串
然而参数fmtflags fmtfl又是什么呢?继续跟进去能够看到get
这里就能够看到fixed的意思是将小数设置为定点表示法string
而后后面的ss.precision(3)就是保留3位io
放在一块儿的意思就是小数点后保留3位有效位。
至于ss.str(),能够看到官网解释以下,获得字符串流中保存的内容,注意返回位std::string类型:
2.手动计算,结束floor函数
这个算法的思想就是先将该数乘以1000,就获得了小数点后三位,而后+0.5是什么意思呢?
你们想想哈,a*1000=1123.456789对不对,咱们通常保留有效位都是须要四舍五入的,
在a*1000以后+0.5不就自动实现了四舍五入了吗?而后在使用地板函数进行取整,再除1000不就完美实现了吗?
总结:第一种方法适用于一次性处理大批数据,好比说若是你想要将不少数据一次写入txt中。
第二种方法比较适合即算即用,快速简便。