Überprüfen Sie, ob eine Zahl int oder float ist

Hier ist, wie ich es gemacht habe:

inNumber = somenumber inNumberint = int(inNumber) if inNumber == inNumberint: print "this number is an int" else: print "this number is a float" 

So ähnlich.
Gibt es noch schönere Möglichkeiten, dies zu tun?

9 Solutions collect form web for “Überprüfen Sie, ob eine Zahl int oder float ist”

Verwendung isinstance .

 >>> x = 12 >>> isinstance(x, int) True >>> y = 12.0 >>> isinstance(y, float) True 

Damit:

 >>> if isinstance(x, int): print 'x is a int!' x is a int! 

_BEARBEITEN:_

Wie bereits erwähnt, wird im Falle von langen ganzen Zahlen die oben genannten nicht funktionieren. Also musst du tun:

 >>> x = 12L >>> import numbers >>> isinstance(x, numbers.Integral) True >>> isinstance(x, int) False 

Einzeiler:

 isinstance(yourNumber, numbers.Real) 

Dies vermeidet einige Probleme:

 >>> isinstance(99**10,int) False 

Demo:

 >>> import numbers >>> someInt = 10 >>> someLongInt = 100000L >>> someFloat = 0.5 >>> isinstance(someInt, numbers.Real) True >>> isinstance(someLongInt, numbers.Real) True >>> isinstance(someFloat, numbers.Real) True 

Ich mag @ ninjageckos Antwort am meisten.

Das würde auch funktionieren:

 isinstance(n, (int, long, float)) 

Es ist einfacher, um Vergebung zu bitten als um Erlaubnis zu bitten. Führen Sie einfach den Vorgang aus. Wenn es funktioniert, war das Objekt von einer akzeptablen, geeigneten, richtigen Art. Wenn die Operation nicht funktioniert, war das Objekt nicht geeignet. Zu wissen, dass die Art selten hilft.

Versuche einfach die Operation und sieh mal, ob es funktioniert.

 inNumber = somenumber try: inNumberint = int(inNumber) print "this number is an int" except ValueError: pass try: inNumberfloat = float(inNumber) print "this number is a float" except ValueError: pass 

Was Sie auch tun können, ist die Verwendung von type() Beispiel:

 if type(inNumber) == int : print "This number is an int" elif type(inNumber) == float : print "This number is a float" 

Hier ist ein Stück Code, der prüft, ob eine Zahl eine Ganzzahl ist oder nicht, es funktioniert sowohl für Python 2 als auch für Python 3.

 import sys if sys.version < '3': integer_types = (int, long,) else: integer_types = (int,) isinstance(yourNumber, integer_types) # returns True if it's an integer isinstance(yourNumber, float) # returns True if it's a float 

Beachten Sie, dass Python 2 beide Typen int und long , während Python 3 nur Typ int . Quelle .

Wenn du überprüfen möchtest ob deine Nummer ein float , der ein int repräsentiert, dann mach das

 (isinstance(yourNumber, float) and (yourNumber).is_integer()) # True for 3.0 

Wenn Sie nicht zwischen int und float unterscheiden müssen, und sind auch ok, dann ist ninjageckos Antwort der Weg zu gehen

 import numbers isinstance(yourNumber, numbers.Real) 

Pls überprüfen dies: import zahlen

 import math a = 1.1 - 0.1 print a print isinstance(a, numbers.Integral) print math.floor( a ) if (math.floor( a ) == a): print "It is an integer number" else: print False 

Obwohl X float ist, aber der Wert ganzzahlig ist, also wenn du den Wert überprüfen möchtest, ist eine ganze Zahl, die du nicht verwenden kannst, und du musst keine Werte vergleichen.

Sie können modulo verwenden, um festzustellen, ob x eine ganze Zahl numerisch ist. Die Methode isinstance(x, int) bestimmt nur, ob x eine ganze Zahl ist:

 def isInt(x): if x%1 == 0: print "X is an integer" else: print "X is not an integer" 

variable.isnumeric prüft, ob ein Wert eine Ganzzahl ist:

  if myVariable.isnumeric: print('this varibale is numeric') else: print('not numeric') 
Python ist die beste Programmiersprache der Welt.