2015-06-19 30 views
-1

我嘗試以下的代碼:顯式類型鑄造浮子(intvar)導致INT

#include <iostream> 
#include<conio.h> 
using namespace std; 
int main() 
{ 
    int intvar = 25; 
    float floatvar = 35.87; 
    cout << "intvar= " << intvar; 
    cout << "\n floatvar =" << floatvar; 
    cout << "\n float(intvar)=" << float(intvar); 
    cout << "\n int(floatvar)=" << int(floatvar); 
    _getch(); 
    return 0; 
} 

float(intvar)結果來作爲25
有人可以解釋爲什麼它仍然顯示爲一個整數而不是25.000000

+0

因爲它們的意思是一樣的嗎?你究竟如何選擇零的數量?無論如何,這可能會有所幫助,如果你想格式化輸出:http://stackoverflow.com/questions/11989374/floating-point-format-for-stdostream/11989420#11989420 –

回答

0

需要指定爲浮點輸出的格式,諸如:[The.C++ Programming.Language.Special.Edition]

cout << "\n float(intvar)=" << std::fixed << float(intvar); 

從21.4.3浮點輸出[io.out.float] :

浮點輸出由格式和精度控制:

- 該 一般格式允許實施選擇呈現格式3210的值最能保留 空間中的值。精度指定最大位數。它 對應於printf()的%g(第21.8節)。

- 科學格式顯示 一個小數點前一個數字的值和一個指數。精度指定 點的最大位數。它對應於printf()的%e。

- 固定格式將 值表示爲整數部分,後跟小數點和小數點 部分。精度指定小數點後的最大位數。它對應於printf()的%f。

3

該值不是整數,只是std::cout會試圖給你一個緊湊的表示。使用setfixedsetprecision(來自#include <iomanip>)強制浮點上的特定輸出精度。在第一個cout行之前加上這個:

cout << fixed << setprecision(6); 
+0

我有疑問,因爲我預計浮動打印一個十進制數字。而不僅僅是一個整數。但是,謝謝你,會嘗試你的建議:) – user2549980