2012-04-04 1 views
0

Gibt es in Python eine Möglichkeit, nur den ganzen Zahlenbereich eines Floats zu drucken, wenn keine zusätzliche Genauigkeit erforderlich ist, um die Zahl auszudrücken? Zum Beispiel der Float 1.0. Einige andere Sprachen tun dies standardmäßig. Hier sind einige Beispiele:Python und Floats - Nur die ganze Zahl drucken

In C++, ist dieser Code druckt 1, nicht 1,0:

int main() 
{ 
    float f = 1.0; 
    std::cout << f << "\n"; 

    return 0; 
} 

./a.out 
1 

jedoch in Python, dieser Code druckt 1,0:

f = 1.0 

print type(f) 
<type 'float'> 

print f 
1.0 

ich für die möchten Python-Code, um nur 1 zu drucken, nicht 1.0, wenn dies alles ist, um die Zahl vollständig darzustellen.

Antwort

5

Verwenden Sie die g Formatierungsoption:

print "{:g}".format(1.0) 

oder

print "%g" % 1.0 

(Erste Option funktioniert in Python 2.7 nur.)

Dies macht etwas sehr ähnlich std::cout in Standardkonfiguration. Es wird nur eine begrenzte Anzahl von Ziffern gedruckt, genau wie std::cout.

+0

, das so einfach ist. Es funktioniert so, wie ich es möchte. Wenn zusätzliche Präzision ausgedrückt werden muss, tut es dies. Vielen Dank. – 01100110

+0

Funktioniert die zweite Option für Python 3.2? – George

+0

@George: Ja, tut es. –

0

Der Modulo-Operator sollte über alle Python-Versionen:

>>> f = 1.0 
>>> if f % 1 == 0: 
...  print int(f) 
... else: 
...  print f 
... 
1 
>>>