C++保留有效位与保留小数位

 若是想要保留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中。

第二种方法比较适合即算即用,快速简便。

相关文章
相关标签/搜索