Liczba decimal zmienia się po przekroczeniu 16 cyfr

Liczba decimal zmienia się po przekroczeniu 16 cyfr
nieznasz
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 239
0

Witam,
mam problem z liczbami w inpucie typu number, które składają się z więcej niż 16 cyfr. Po wprowadzeniu w input liczby np. 1234567890123456789,22 w drugim inpucie, do którego trafia ta wartość zmodyfikowana do liczby całkowitej, otrzymuję: 1234567890123456800.

Najlepiej zobrazuje to przykład poniżej:
https://jsfiddle.net/gsferreira/Lsv9f0b0/

Dlaczego tak się dzieje? Czy można coś z tym zrobić? Czy należy ograniczyć pole maksymalnie do 16 znaków?

Pozdrawiam

Haskell
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4700
2

Typy danych mają ograniczoną pojemność, w zależności od standardu i architektury do 32 lub 64 bitów. W związku z tym nie pomieszczą zbyt dużych liczb.

Żeby przechowywać duże liczby stosuje się gotowe albo własne implementacje. Szukaj pod hasłami "bigint", "bidecimal" itd.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.