我有一個浮動:漂浮在X小數
float trol;
然後我將它設置:
trol = (22/7);
然後,我打印出來(我在一個控制檯項目現在):
cout << trol << endl;
注:我已經包括iostream
,cstdlib
,cstdio
輸出:
3
如何設置小數位的浮動金額? 注2:必須在cout
以外的值中設置。
我有一個浮動:漂浮在X小數
float trol;
然後我將它設置:
trol = (22/7);
然後,我打印出來(我在一個控制檯項目現在):
cout << trol << endl;
注:我已經包括iostream
,cstdlib
,cstdio
輸出:
3
如何設置小數位的浮動金額? 注2:必須在cout
以外的值中設置。
22/7
的結果恰好是三個 - 你將int
s分開,所以你得到一個整數除法。
嘗試
trol = 22.0f/7;
強制float
計算。
您的主要問題是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)
這會實際改變價值嗎?還是會以不同的方式印刷它?它仍然有效。 – 2012-02-04 15:40:27
只需改變打印方式。 – RussS 2012-02-04 15:41:20
我該如何改變它的價值......如果它保持浮動狀態並不重要,但它會很好:D。 – 2012-02-04 15:43:42
如果要設置值中的小數位數,則不需要使用浮點型。您希望定點類型(如小數),或者可能將您的值存儲爲整數類型。
例如
piToTwoPlaces = 22.0f/7 * 100; 給你314,然後你寫一個函數輸出爲「3.14」(不使用浮點數!)
浮點只能近似許多值。在浮點處理器中使用它們時,無法使用校正技術,您可以得到如下的結果:1/3 * 3 < 1.嘗試在接近0.3的情況下重複檢測相當簡單,其他數字不是禱告,所以如果要精確到x小數點後,float不會削減它。
我同意,除非你改變cout精度,否則float對精度有一個固定的值,但現在我將使用雙精度,整數等。 – 2012-02-04 16:21:14
謝謝,但它是小數點後5位的限制還是可以更多/更少?編輯:感謝2答案,絕對停留在這些論壇 – 2012-02-04 15:37:22
'浮動'精度取決於平臺。 'std :: cout << trol'將打印出與'std :: cout.precision()'設置爲(默認似乎是6,不確定是否標準或實現定義)的位數。用'std :: cout.precision(n)'改變它,或者使用'iomanip'中的'std :: setprecision(n)'。 – Mat 2012-02-04 15:43:51