2009-09-10 135 views
2
#include <iostream> 
using namespace std; 
int main() 
{ 
     float s; 
     s = 10/3; 
     cout << s << endl; 
     cout.precision(4); 
     cout << s << endl; 
     return 0; 

} 

爲什麼輸出不顯示3.333但只有3?C++ Cout浮點數問題

回答

7

,因爲你正在做s = 10/3

整數除法嘗試

s = 10.0f/3.0f 
+0

關閉,但現在是雙倍的。 – GManNickG 2009-09-10 21:29:20

+0

現在怎麼樣? – jcopenha 2009-09-10 21:33:07

+0

右鍵。 :P [15chars] – GManNickG 2009-09-10 21:33:30

2

10/3是整數除法。您需要使用10.0/3(浮動)10/3或10/3.0等

+0

使用C++類型轉換,如'static_cast' – GManNickG 2009-09-10 21:30:51

+0

或ctor語法,如'float(3)' – MSalters 2009-09-11 10:08:36

4

做一個恆定的浮動師正確的方法是:

s = 10.f/3.f; // one of the operands must be a float 

沒有f後綴,你是做double師,發出警告(從floatdouble)。

您也可以施放一個操作數:

s = static_cast<float>(10)/3; // use static_cast, not C-style casts 

在正確分割了。