Jak sprawdzić, czy liczba jest liczbą zmiennoprzecinkową w Pythonie


Najlepsza odpowiedź

W Pythonie możesz poznać typ zbioru danych w dowolnym programie, używając type () .

Jeśli liczba jest liczbą zmiennoprzecinkową, kod i tak wypisze typ. Przykład:

a = 2 #integer

b = "Cosmos" #string

c = 3.4 #float

print(type(a))

print(type(b))

print(type(c))

Dane wyjściowe w naturalny sposób pokażą typ danych każdego z nich, przy czym wartość zmiennej c to float. Dlatego jest to najłatwiejszy i najszybszy sposób sprawdzenia, czy typ danych to float.

Mam nadzieję to pomaga 🙂

Odpowiedź

To zależy od języka. Niektóre języki (np. JavaScript) mają operator typeof, którego można użyć do określenia różnicy. Chociaż w JavaScript, to ci nie pomoże, ponieważ w JavaScript nie ma czegoś takiego jak liczba całkowita. JavaScript ma ujednolicony typ liczb, który zawiera zarówno liczby całkowite, jak i zmiennoprzecinkowe, więc sposoby ich sprawdzenia obejmują

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

Jeśli używasz języka C (lub języka, który ma statyczny, nominalny system typów), możesz zrobić coś podobnego:

(n - (int) n) > 0

To, co się tutaj dzieje, polega na tym, że operator (int) rzuca swój operand, aby wymusić na nim bycie liczbą całkowitą. To „odcina” część dziesiętną, dając w ten sposób ten sam efekt, co JavaScript Math.floor.

Jest jednak jedno zastrzeżenie. Czasami małe różnice są zbyt małe dla operatora równości. 1 == 0.9999999999999999 ma wartość fałsz, ale 1 == 0.99999999999999999 jest prawdziwe. Na przykład w języku C może być konieczne zastąpienie > 0 słowami > FLT\_EPSILON i #include . FLT\_EPSILON jest stałą reprezentującą najmniejszą reprezentowalną liczbę zmiennoprzecinkową. Możesz go użyć podczas porównywania dwóch pływaków i mieć pewność, że nie będą one błędnie porównywać równych. Robisz to, odejmując je i sprawdzając, czy różnica jest większa niż („nie równa”) lub mniejsza lub równa („równa”) FLT\_EPSILON.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *