2010-09-12 11 views
6

W JavaScript jest ważne, aby zakończyć całkowitą numeryczną dosłowne z kropką, tak jak ...Dlaczego literał całkowity, po którym następuje kropka, jest prawidłową literałem liczbowym w kodzie JavaScript?

x = 5.; 

Jaki jest sens posiadania ten zapis? Czy istnieje jakikolwiek powód, aby umieścić kropkę na końcu, a jeśli nie, dlaczego ta notacja jest dozwolona?

Aktualizacja: Ok chłopaki, ponieważ wspomniałeś o floatach i liczbach całkowitych ... Mówimy tutaj o JavaScript. W JavaScript jest tylko jeden typ liczbowy, którym jest IEEE-754.

5 i 5. mają tę samą wartość, nie ma różnicy między tymi dwiema wartościami.

+0

Co bardziej interesujące dla mnie jest to, że javascript pozwala na "05" i "5", ale nie na "05". – user113716

+2

To dlatego, że przedrostek '0' sprawia, że ​​jest to liczba ósemkowa, jak wyrazisz ósemkowy float? ;) –

+0

@Ivo - Ah, rzeczywiście tak. '09' działa. Dzięki! : o) – user113716

Odpowiedz

2

Trzeba przecinek, jeśli można nazwać metodę na liczbę całkowitą:

5.toFixed(n) // throws an error 

5..toFixed(n) // returns the string '5.' followed by n zeroes 

Jeśli to nie wygląda dobrze, (5).toFixed(n) lub 5.0.toFixed(n), będzie działać, too.

-1

Co się stanie, jeśli nie będzie liczbą całkowitą, ale literałem zmiennoprzecinkowym?

1

To liczba zmiennoprzecinkowa. W przeciwieństwie do innych języków, jakie kiedykolwiek spotkałem, wszystkie numeryw JavaScript są w rzeczywistości 64-bitowymi liczbami zmiennoprzecinkowymi. Technicznie nie ma natywnych liczb całkowitych w JavaScript. Zobacz The Complete Javascript Number Reference dla pełnej brzydkiej historii.

+0

Czy osoba, która zgłosiła chęć komentowania? – Asaph

+0

Pewnie (przepraszam, że nie zauważyłem wcześniej): * Nie sądzę, że odpowiadasz na pytanie OP (np. O analizowanie i notacje, a nie o rozmiar) * Numery JavaScript są uważane za wiarygodne aż do granic, które oznacza, że ​​nie musisz traktować ich jak zwykłych punktów zmiennoprzecinkowych (tzn. możesz zrobić 10.0/2 == 5, czego nie powinieneś używać z normalnymi punktami zmiennoprzecinkowymi) – Eric

2

Poprawną odpowiedzią w tym przypadku jest to, że nie ma absolutnie żadnej różnicy.

Każda liczba w kodzie JavaScript jest już liczbą zmiennoprzecinkową 64-bitową.

W „. syntax” jest użyteczne tylko w przypadkach, gdy można ommit części stałej, bo to 0:

.2 // Will end up as 0.2 
-.5 // Will end up as -0.5 

Tak ogólnie to po prostu oszczędność bajt, ale to sprawia, że ​​kod mniej czytelny jednocześnie .

+0

Byłoby sensowne, że wartości niecałkowite (wartości z ułamki dziesiętne) mają wartości kropkowe (oczywiście) i całkowite. więc jest to po prostu liczba całkowita jak 5 lub jest to liczba rzeczywista jak 5,01 ... ale dlaczego 5. jest dozwolone? Jeśli kropka w tym przypadku nie robi różnicy, ta notacja jest bezużyteczna. Dlaczego więc mieliby włączyć tę notację? –

4

Sądzę, że jest to po prostu kompatybilność z innymi językami w języku C, w których kropka ma znaczenie.

+0

Nazwałbym to dziedzictwo ... Ale tak, to prawdopodobnie powód. Wydaje mi się, że twórca JavaScript właśnie skopiował notację z C, ale później zdecydował się zdefiniować tylko jeden typ numeru (a potem nie pomyślał o ponownym zapisaniu notacji). –

Powiązane problemy