Hoe te controleren of een getal een float is in Python


Beste antwoord

In Python kun je het type dataset in elk programma kennen met behulp van de type () functie.

Als een getal zwevend is, zal de code het type toch afdrukken. Een voorbeeld:

a = 2 #integer

b = "Cosmos" #string

c = 3.4 #float

print(type(a))

print(type(b))

print(type(c))

De output zal natuurlijk datatype van elk tonen, waarbij de waarde in variabele c de float. Daarom is dit de gemakkelijkste en snelste manier om te weten of een datatype float is.

Hoop het helpt 🙂

Antwoord

Het hangt af van de taal. Sommige talen (zoals JavaScript) hebben een typeof -operator die u kunt gebruiken om het verschil te zien. Hoewel dit in JavaScript u niet helpt, omdat JavaScript niet zoiets als een geheel getal bestaat. JavaScript heeft een uniform getallentype dat zowel gehele getallen als drijvers omvat, dus manieren om daar te controleren zijn onder meer

n - Math.floor(n) > 0

// 3.14 - 3.00 = 0.14. 0.14 > 0.00

n.toString().indexOf(".") == -1

// indexOf() returns -1 when it can’t find the given substring

Als je C gebruikt (of een taal met een statisch, nominaal systeem), dan kun je iets soortgelijks doen:

(n - (int) n) > 0

Wat hier gebeurt, is dat de (int) -operator zijn operand intypt om te forceren dat het een geheel getal is. dit knipt het decimale gedeelte af, en heeft dus hetzelfde effect als Math.floor van JavaScript.

Er is echter een voorbehoud. Soms zijn kleine verschillen te klein voor de gelijkheidsoperator. 1 == 0.9999999999999999 is onwaar, maar 1 == 0.99999999999999999 is waar. In C moet u bijvoorbeeld > 0 vervangen door > FLT\_EPSILON en #include . FLT\_EPSILON is een constante die de kleinste representatieve float vertegenwoordigt. U kunt het gebruiken bij het differentiëren van twee drijvers en er zeker van zijn dat ze niet ten onrechte gelijk zullen vergelijken. U doet dat door ze af te trekken en te controleren of het verschil groter is dan (“niet gelijk”) of kleiner dan of gelijk aan (“gelijk”) FLT\_EPSILON.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *