Kwoty i separatory - wartości testowe
Kwoty zapisane tak, jak zapisują je ludzie i arkusze, 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 currency-separators.
Pułapka zaokrąglenia 2,675
currency-separators/rounding-2675
2,675
2,675
- 5 grafemów
- 5 punktów kodowych
- 5 bajtów
- 5 jednostek UTF-16
- Co psuje
- Zaokrąglona do dwóch miejsc ta wartość idzie w dół, choć człowiek spodziewa się, że pójdzie w górę, bo jej zapis dwójkowy jest odrobinę mniejszy od dziesiętnego.
- Co robi poprawna aplikacja
- Zaokrąglana według reguły podanej w specyfikacji, stosowanej identycznie w interfejsie i w zapisie.
Pułapka zaokrąglenia 1,005
currency-separators/rounding-1005
1,005
1,005
- 5 grafemów
- 5 punktów kodowych
- 5 bajtów
- 5 jednostek UTF-16
- Co psuje
- Ta sama awaria przy innym rzędzie wielkości. Jedna z tych dwóch wartości łapie prawie każdą naiwną implementację zaokrąglania.
- Co robi poprawna aplikacja
- Tak samo jak wyżej.
Przecinek jako separator dziesiętny
currency-separators/comma-decimal-money
1234,56
1234,56
- 7 grafemów
- 7 punktów kodowych
- 7 bajtów
- 7 jednostek UTF-16
- Co psuje
- Separator dziesiętny używany lokalnie. Parser oczekujący kropki czyta go jako separator tysięcy i mnoży kwotę przez sto.
- Co robi poprawna aplikacja
- Przyjmowany w ustawieniach regionalnych, które go używają, z pokazaną oczekiwaną postacią.
Twarde spacje między tysiącami
currency-separators/nbsp-thousands
1000000,00
1\u00A0000\u00A0000,00
- 2 spacje, które nie są zwykłymi spacjami
- 12 grafemów
- 12 punktów kodowych
- 14 bajtów
- 12 jednostek UTF-16
- Co psuje
- Kwoty skopiowane z raportu niosą twarde spacje jako separatory grup, których nie przyjmuje żaden parser liczb.
- Co robi poprawna aplikacja
- Separatory usuwane przed odczytem, także te niewidoczne.
Spacje między tysiącami
currency-separators/space-thousands
1000000,00
1 000 000,00
- 12 grafemów
- 12 punktów kodowych
- 12 bajtów
- 12 jednostek UTF-16
- Co psuje
- To samo ze zwykłymi spacjami. Taką postać daje większość lokalnego formatowania.
- Co robi poprawna aplikacja
- Przyjęte i znormalizowane.
Kwota ujemna w nawiasach
currency-separators/negative-parens
(1234,56)
(1234,56)
- 9 grafemów
- 9 punktów kodowych
- 9 bajtów
- 9 jednostek UTF-16
- Co psuje
- Księgowy zapis kwot ujemnych. Odczytany jako tekst staje się dodatnią liczbą w nawiasach.
- Co robi poprawna aplikacja
- Odczytana jako ujemna albo odrzucona z pokazaną oczekiwaną postacią.
Trzy miejsca po przecinku
currency-separators/three-decimals
1234,567
1234,567
- 8 grafemów
- 8 punktów kodowych
- 8 bajtów
- 8 jednostek UTF-16
- Co psuje
- Więcej miejsc po przecinku, niż ma waluta. Ciche zaokrąglenie zmienia tu sumę faktury.
- Co robi poprawna aplikacja
- Odrzucona albo zaokrąglona, a zaokrąglenie pokazane przed zapisem.
Ujemne zero
currency-separators/negative-zero
-0,00
-0,00
- 5 grafemów
- 5 punktów kodowych
- 5 bajtów
- 5 jednostek UTF-16
- Co psuje
- Ujemne zero wyświetla się jak kwota ujemna, a w porównaniu równa się zeru. Raporty pokazują minus przy niczym.
- Co robi poprawna aplikacja
- Zamieniane na zero przy zapisie.
Kwota zero
currency-separators/zero-amount
0,00
0,00
- 4 grafemy
- 4 punkty kodowe
- 4 bajty
- 4 jednostki UTF-16
- Co psuje
- Zero to prawdziwa kwota, często mylona z pustym polem.
- Co robi poprawna aplikacja
- Zapisana i wyświetlana jako zero, różna od pustego pola.
Kwota z symbolem waluty
currency-separators/symbol-appended
1234,56zł
1234,56 zł
- 10 grafemów
- 10 punktów kodowych
- 11 bajtów
- 10 jednostek UTF-16
- Co psuje
- Kwota tak, jak wygląda w dokumencie, z symbolem waluty. Pole liczbowe odrzuca ją w całości.
- Co robi poprawna aplikacja
- Symbol usuwany przy wprowadzaniu albo pokazana oczekiwana postać.
Apostrof między tysiącami
currency-separators/apostrophe-thousands
1'234.56
1'234.56
- 8 grafemów
- 8 punktów kodowych
- 8 bajtów
- 8 jednostek UTF-16
- Co psuje
- Separator grup używany w niektórych ustawieniach regionalnych. Nieznajomy, a całkowicie poprawny.
- Co robi poprawna aplikacja
- Przyjmowany tam, gdzie te ustawienia regionalne są obsługiwane, albo odrzucany z oczekiwaną postacią.
Kwota szersza niż typ pieniężny
currency-separators/huge-amount
999999999999,99
999999999999,99
- 15 grafemów
- 15 punktów kodowych
- 15 bajtów
- 15 jednostek UTF-16
- Co psuje
- Kwota szersza niż typ używany dla pieniędzy. Przepełnienie daje tu ujemną sumę.
- Co robi poprawna aplikacja
- Odrzucona z podanym limitem, zanim trafi do jakiejkolwiek sumy.