小數點精度的控制

2021-10-03 17:57:12 字數 2313 閱讀 4014

我的作業**現了對於小數點精度的控制,要求先要控制精度輸出,比如說小數點後必須為兩位,然後再取消這種控制

本文即針對該過程中我遇到的問題進行總結和給出解決方法。

首先是針對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...