Liczby skrajne - wartości testowe
Liczby na granicach swoich typów, w obcych zapisach i tam, gdzie kończy się precyzja. 12 wartości, każda z tym, co psuje, i z tym, co zamiast tego robi poprawna aplikacja.
Wpisuj je po jednej skrótem AltShiftN
w palecie albo weź wszystkie do skryptu poleceniem nkb emit numbers-extreme.
Największa bezpieczna liczba całkowita JavaScriptu plus jeden
numbers-extreme/js-safe-plus-one
9007199254740992
9007199254740992
- 16 grafemów
- 16 punktów kodowych
- 16 bajtów
- 16 jednostek UTF-16
- Co psuje
- Powyżej tej wartości przeglądarki i wiele interfejsów przestaje dokładnie przedstawiać liczby całkowite, więc identyfikator zwrócony przez serwer nie zgadza się z tym, co widzi użytkownik.
- Co robi poprawna aplikacja
- Obsługiwana jako tekst tam, gdzie liczy się dokładność, albo odrzucana z podanym limitem.
Maksimum liczby 32-bitowej plus jeden
numbers-extreme/int32-max-plus-one
2147483648
2147483648
- 10 grafemów
- 10 punktów kodowych
- 10 bajtów
- 10 jednostek UTF-16
- Co psuje
- Jeden ponad najczęstszy limit liczb całkowitych - tu liczniki, identyfikatory i ilości przekręcają się na liczbę ujemną.
- Co robi poprawna aplikacja
- Odrzucone z komunikatem albo konsekwentnie obsłużone szerszym typem.
Maksimum liczby 32-bitowej
numbers-extreme/int32-max
2147483647
2147483647
- 10 grafemów
- 10 punktów kodowych
- 10 bajtów
- 10 jednostek UTF-16
- Co psuje
- Sama granica: przyjęcie tutaj i błąd o jeden wyżej to różnica między poprawnym limitem a przypadkiem.
- Co robi poprawna aplikacja
- Przyjęte tam, gdzie limit na to pozwala.
Minus jeden
numbers-extreme/minus-one
-1
-1
- 2 grafemy
- 2 punkty kodowe
- 2 bajty
- 2 jednostki UTF-16
- Co psuje
- Pola ilości, ceny i liczby sztuk, które nigdy nie spodziewały się wartości ujemnej. Często ją przyjmują, a wychodzi to dopiero przy fakturowaniu.
- Co robi poprawna aplikacja
- Odrzucony wszędzie tam, gdzie wartość ujemna nie ma sensu, z komunikatem, który to mówi.
Zero
numbers-extreme/zero
0
0
- 1 grafem
- 1 punkt kodowy
- 1 bajt
- 1 jednostka UTF-16
- Co psuje
- Odróżnienie „zera” od „niewypełnionego” to jedna z najczęściej mylonych granic w formularzach.
- Co robi poprawna aplikacja
- Zapisane jako zero i wyświetlane jako zero, nigdy jako puste pole.
Przecinek jako separator dziesiętny
numbers-extreme/comma-decimal
3,14
3,14
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Separator dziesiętny używany w większości Europy. Parsery oczekujące kropki czytają go jako separator tysięcy albo go odrzucają.
- Co robi poprawna aplikacja
- Przyjęty w ustawieniach regionalnych, które go używają, albo odrzucony z komunikatem, który podaje oczekiwany format.
Spacje między tysiącami
numbers-extreme/thousands-space
1000000
1 000 000
- 9 grafemów
- 9 punktów kodowych
- 9 bajtów
- 9 jednostek UTF-16
- Co psuje
- Liczba skopiowana z raportu przynosi ze sobą separatory grup cyfr, a większość parserów liczb jej odmawia.
- Co robi poprawna aplikacja
- Separatory usunięte przed parsowaniem albo komunikat, który wyjaśnia oczekiwany format.
Zapis wykładniczy
numbers-extreme/exp-notation
1e10
1e10
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Eksporty z arkuszy kalkulacyjnych zapisują tak duże liczby, więc ta postać trafia do pól, które się jej nie spodziewały.
- Co robi poprawna aplikacja
- Przyjęty i rozwinięty albo odrzucony - nigdy nie odczytany jako cyfra 1.
Zera wiodące
numbers-extreme/leading-zeros
007
007
- 3 grafemy
- 3 punkty kodowe
- 3 bajty
- 3 jednostki UTF-16
- Co psuje
- Kody, numery pokoi i numery artykułów tracą zera wiodące w chwili, gdy ktoś potraktuje je jako liczby.
- Co robi poprawna aplikacja
- Zachowane tam, gdzie wartość jest kodem, a nie ilością.
Typograficzny znak minus
numbers-extreme/minus-typographic
−1234
−1234
- 5 grafemów
- 5 punktów kodowych
- 7 bajtów
- 5 jednostek UTF-16
- Co psuje
- Typograficzny znak minus wygląda identycznie jak minus z ASCII i odrzuca go każdy parser liczb.
- Co robi poprawna aplikacja
- Ujednolicony przed parsowaniem albo odrzucony z komunikatem, który nazywa ten znak.
50 cyfr
numbers-extreme/fifty-digits
50 × 9
- 50 grafemów
- 50 punktów kodowych
- 50 bajtów
- 50 jednostek UTF-16
- Co psuje
- Liczba szersza niż jakikolwiek typ liczbowy. Zwykle kończy się przepełnieniem albo surowym błędem zamiast komunikatu.
- Co robi poprawna aplikacja
- Czytelny komunikat zamiast strony z błędem.
Znak plus przed liczbą
numbers-extreme/plus-prefixed
+5
+5
- 2 grafemy
- 2 punkty kodowe
- 2 bajty
- 2 jednostki UTF-16
- Co psuje
- Jawnie dodatnia liczba, poprawna w większości zapisów i odrzucana przez wiele prostych walidatorów.
- Co robi poprawna aplikacja
- Przyjęty i znormalizowany albo odrzucony z podanym formatem.