Jak mogę przetestować zmienną, aby upewnić się, że zawiera ona liczbę i jest liczbą całkowitą?Jak wykryć, czy podana liczba jest liczbą całkowitą?
np.
if (1.589 == integer) // false
if (2 == integer) // true
Jakieś wskazówki?
Jak mogę przetestować zmienną, aby upewnić się, że zawiera ona liczbę i jest liczbą całkowitą?Jak wykryć, czy podana liczba jest liczbą całkowitą?
np.
if (1.589 == integer) // false
if (2 == integer) // true
Jakieś wskazówki?
num % 1 === 0
ten przekształci num
wpisać Number
początku, więc wartość, która może być przekształcona do całkowitej przejdzie testu (np '42'
, true
).
Jeśli chcesz wykluczyć te, dodatkowo sprawdzić
typeof num === 'number'
Można również użyć parseInt()
to zrobić, czyli
parseInt(num) == num
dla pozbawionym typu Sprawdź i
parseInt(num) === num
dla wpisanego czeku.
Należy zauważyć, że testy nie są równoważne: sprawdzenie za pomocą parseInt()
zostanie najpierw przekonwertowane na String
, więc np. true
nie przejdzie testu.
Należy również pamiętać, że bez typu check poprzez parseInt()
zajmie ciągów szesnastkowych poprawnie, ale nie powiedzie się na octals (tj ciągi liczbowe z zerem), ponieważ są one uznawane przez parseInt()
ale nie przez Number()
. Jeśli potrzebujesz obsługi łańcuchów dziesiętnych z zerami wiodącymi, musisz podać argument radix.
Ten robi to, dziękuję. – jirkap
Istnieje funkcja javascript o nazwie isNaN (val), która zwraca wartość true, jeśli val nie jest liczbą.
Jeśli chcesz użyć val postaci liczby, trzeba rzucić używając parseInt() lub parseFloat()
EDIT: oops. Poprawiono błąd, jak wspomniano w komentarzu
Po prostu od nazwy funkcji, myślę, że "isNaN" zwróci true, jeśli val "jest * Nie * liczba", co jest co oznacza NaN. Typo? –
isNaN (val) zwraca wartość true, jeśli val nie jest liczbą, ale zwraca również wartość false dla liczb niecałkowitych, więc nie rozwiąże problemu. – Amok
Jak o tym:
if((typeof(no)=='number') && (no.toString().indexOf('.')==-1))
To nie zadziała, ponieważ 8.000 jest wciąż liczbą całkowitą. –
To prawdopodobnie zależy od twojej definicji (i przypadku użycia) liczby całkowitej – bdukes
Hmm. Prawdziwe. Z natury pytań matematycznych staram się myśleć o nich w kategoriach liczbowych, a nie liczbowych - stąd mój komentarz powyżej. –
można też skorzystać z możliwości lub Javas analizę składniową także wypróbować% operatora modulo ...
byłoby to nie działa:
if (parseInt(number, 10) == number)
{
alert(number + " is an integer.");
}
Ktoś już ma done it for you.
Jak @Greg mówi powyżej (http://stackoverflow.com/questions/1323314/detecting-if-a-given-number- is-an-integer # comment-1157013), powinno to zawierać parametr radix do parseInt. – bdukes
to działa:
if (Math.floor(x) == x)
Ma to tę zaletę, że działa, jeśli x to "fałsz"; –
Można użyć formalną definicję liczby całkowitej:
Math.floor(x) === x
możliwe duplikat [Jak sprawdzić, czy zmienna jest liczbą całkowitą w JavaScript?] (Http://przepełnienie stosu.com/questions/14636536/how-to-check-if-a-variable-is-an-integer-in-javascript) –