如果想要保留n位小數
根據C++官網上的解釋,該函式沒有指定的回傳型別,并且該函式用于設定輸出操作上的小數精確位,
然后回傳值中解釋:未指定回傳值,這個函式僅用于資料流修改操作上,

說了這么多,我想要表達的意思就是當我們需要將精確后的小數保存(將a精確后保存賦值給b)起來的話,使用setprecision函式就不行了,
沒關系,別急,我這里有解決方法:
如果你在學習C/C++的程序中遇到了問題,可以來加入小編的企鵝圈問小編哦~小編很熱情的(●’?’●)
1.使用stringstream類
在這里我們使用第一種方式,可以看到第一種用法解釋是設定流的格式標志(format flag)為引數 fmtfl 的形式
然而引數fmtflags fmtfl又是什么呢?繼續跟進去可以看到

這里就可以看到fixed的意思是將小數設定為定點表示法
然后后面的ss.precision(3)就是保留3位
放在一起的意思就是小數點后保留3位有效位,
至于ss.str(),可以看到官網解釋如下,得到字串流中保存的內容,注意回傳位std::string型別:
2.手動計算,結束floor函式
這個演算法的思想就是先將該數乘以1000,就得到了小數點后三位,然后+0.5是什么意思呢?

大家想一想哈,a*1000=1123.456789對不對,我們一般保留有效位都是需要四舍五入的,
在a*1000之后+0.5不就自動實作了四舍五入了嗎?然后在使用地板函式進行取整,再除1000不就完美實作了嗎?
總結:第一種方法適用于一次性處理大批資料,比如說如果你想要將很多資料一次寫入txt中,
第二種方法比較適合即算即用,快速簡便,
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/239862.html
標籤:C++
