我的作業**現了對於小數點精度的控制,要求先要控制精度輸出,比如說小數點後必須為兩位,然後再取消這種控制
本文即針對該過程中我遇到的問題進行總結和給出解決方法。
首先是針對c++情況下的小數點精度控制
對於c++的格式輸出,要用到cout.setprecision()
和fixed
,前面的乙個單獨使用是用來對於數的長度進行控制的。
如下**實驗cout.setprecision()
的作用:
#include#includeusing namespace std;
int main()
下面為在vs下執行得到的結果圖
下面為在dev下執行得到的結果圖
這裡面可以發現乙個情況,就是setprecision()
的呼叫是一直作用的,除非重新呼叫之後,才會呈現新的呼叫結果。
同時上面所用到的setprecision()
都是對整體長度的限制,只有和fixed
一起使用的時候,才會是對小數點位數的限制。
對小數點位數進行限制的**如下
#include#includeusing namespace std;
int main()
在vs下執行得到的結果圖
真正的問題在於如何取消setprecision()
的作用,首先在網上,我查詢到要利用cout.unsetf(ostream::fixed)
來取消對於小數字數的限制,但是這樣並不能取消掉setprecision()
的作用。
所用實驗**如下
#include#includeusing namespace std;
int main()
在vs下執行得到的結果圖
網上查詢到的另一種方法是cout.unsetf(floatfield)
,實際上呢這種方法和上面的方法是乙個思路,都是清楚了cout對應的類ostream類中的指示bit,然後並沒有對setprecision()
的作用產生影響
實驗所用**如下
#include#includeusing namespace std;
int main()
實驗執行圖和上乙個一樣
找了這麼多方法,最後發現,好像setprecision()
這個函式是有預設值的,在c++裡面這個值是6,因此只要將fixed
的作用效果取消掉,然後再將setprecision()
的值恢復6,就和預設值一樣了。
實驗**如下
#include#includeusing namespace std;
int main()
實驗截圖如下
可以發現取消了fixed
的作用,只要讓setprecision
的預設值變為6即可做到原來的輸出。
這樣就滿足了我的要求,做了輸入精度要求,最後又恢復到預設的輸出情況。
c中控制精度的方法
c中因為有printf
函式,所以控制精度的時候主要是依賴於格式化的符號。這裡就不展開說各種操作符了,就把我的成品**放在這裡算了。
for (i = 0; i < student_num && max[i] != 0; i++)
}
該**不可直接執行,看看其中用到的控制符就好了。 小數點輸出精度控制問題
小數點輸出精度控制問題 setf 是追加標誌字的函式,而flags 是設定標誌字 fixed標誌是以定點形式顯示浮點數 當有fixed標誌時,說明資料按一定的位數輸出,否則去掉fixed標誌後,資料按原位輸出 即小數最後面的0不顯示 因此,使用時有兩種情況 1 原位輸出,這時應去掉fixed標誌 c...
c 小數點精度設定案例
標頭檔案 include,函式setprecision setprecision n 指定乙個浮點數的精度預設設定輸出的數字的總位數為n,包含整數和小數部分。fixed 必須與setprecision n 配合使用,用來控制小數字數,不夠補0,只要寫一次fixed,後面的setprecision n...
python小數點 python 小數點問題
我想生成一組小數,大小為從0到1,間隔為0.2,即 0,0.2,0.4,0.6,0.8,1 1.while迴圈生成 a list i 0 while i 1 i 0.2 print a list 列印結果為 0,0.2,0.4,0.6000000000000001,0.8,1.0 奇怪,為什麼會有0...