2012-02-04 32 views
-1

我有一個浮動:漂浮在X小數

float trol; 

然後我將它設置:

trol = (22/7); 

然後,我打印出來(我在一個控制檯項目現在):

cout << trol << endl; 

注:我已經包括iostreamcstdlibcstdio

輸出:

3 

如何設置小數位的浮動金額? 注2:必須在cout以外的值中設置。

回答

2

22/7的結果恰好是三個 - 你將int s分開,所以你得到一個整數除法。

嘗試

trol = 22.0f/7; 

強制float計算。

+0

謝謝,但它是小數點後5位的限制還是可以更多/更少?編輯:感謝2答案,絕對停留在這些論壇 – 2012-02-04 15:37:22

+0

'浮動'精度取決於平臺。 'std :: cout << trol'將打印出與'std :: cout.precision()'設置爲(默認似乎是6,不確定是否標準或實現定義)的位數。用'std :: cout.precision(n)'改變它,或者使用'iomanip'中的'std :: setprecision(n)'。 – Mat 2012-02-04 15:43:51

7

您的主要問題是22/7是一個(int/int),它將返回一個int(3),然後將其轉換爲float(3)。所以像22.0f/7.0f這樣的東西會返回一個浮點數(3.14),這是你最想要的。

然後給你輸出使用前集精密

cout.precision(int d); 

其中d是你多麼精密想:)

如果您需要更精確的讓你可以使用double類型,這將允許兩次儘可能多的重要人物。

double result = (22.0/7.0) 
+0

這會實際改變價值嗎?還是會以不同的方式印刷它?它仍然有效。 – 2012-02-04 15:40:27

+0

只需改變打印方式。 – RussS 2012-02-04 15:41:20

+0

我該如何改變它的價值......如果它保持浮動狀態並不重要,但它會很好:D。 – 2012-02-04 15:43:42

0

如果要設置值中的小數位數,則不需要使用浮點型。您希望定點類型(如小數),或者可能將您的值存儲爲整數類型。

例如

piToTwoPlaces = 22.0f/7 * 100; 給你314,然後你寫一個函數輸出爲「3.14」(不使用浮點數!)

浮點只能近似許多值。在浮點處理器中使用它們時,無法使用校正技術,您可以得到如下的結果:1/3 * 3 < 1.嘗試在接近0.3的情況下重複檢測相當簡單,其他數字不是禱告,所以如果要精確到x小數點後,float不會削減它。

+0

我同意,除非你改變cout精度,否則float對精度有一個固定的值,但現在我將使用雙精度,整數等。 – 2012-02-04 16:21:14