Tworzę aplikację budżetu z javascript. Muszę pozwolić javascript wykonać większość operacji. Mam więc pewne elementy sterujące, w których użytkownik zmienia żądaną kwotę dla kategorii, a moja aplikacja pokazuje nowe kwoty dla podkategorii. Więc jeśli mam + Auto $ 50.23 - Gaz $ 30.25 - Konserwacja $ 6,27 - Ubezpieczenia $ 10,02 - ...Operacje walutowe za pomocą javaScript?
Więc jeśli użytkownik zmieni Auto 50.23 do 90.00, kwoty za gaz, konserwacji, ubezpieczenia, etc odzwierciedlałoby wzrost procentowy w ich kategorii macierzystej.
Problem polega na tym, że po kilku operacjach tracę precyzję i powoduje ona pewne nieprzyjemne błędy. Zazwyczaj liczby nie sumują się (tak jak powinny). Po zmianie kwoty na auto kilka razy, a następnie ustawieniu na 0, pozostałe kwoty nie zawsze idą do 0, a czasami spadają poniżej 0, dając mi NaN, więc jeśli później zmienię Auto na coś większego niż 0, mój NaN pozostanie NaN.
Właśnie usłyszałem, że ktoś mówi, że ułamki w javascript są przybliżeniami, co jest kolejnym problemem. Próbowałem google sprawdzić, czy to jest fakt, ale nie mogłem znaleźć niczego (może nie szukałem odpowiednich warunków).
Jestem pewien, że niektórzy z was wpadli na podobne problemy, co byście zrobili sugerować? Ktoś zasugerował, aby pomnożyć moją oryginalną liczbę przez 100, a następnie wykonać wszystkie operacje, ale obawiam się, że to nie pomoże mi uciec z problemem utraty precyzji.
Wszelkie pomysły?
Doceniam twoją pomoc!
Każda liczba w JS jest liczbą zmiennoprzecinkową, ale nie powinieneś tracić tak dużej precyzji na liczbach 2-miejscowych. Potrzebne są dosłownie tysiące lub miliony iteracji, zanim zaokrąglenie FP stanie się problemem. Czy możesz pokazać odpowiedni fragment kodu, w którym wykonujesz obliczenia? Nie potrzebujemy całej strony, tylko odrobinę. –
cóż, prawdopodobnie możesz stworzyć własną klasę z właściwościami takimi jak dolary i centy (wszystkie liczby całkowite) i implementować własne operacje – spacevillain
Błędy dodatków fp są najczęściej zgłaszanymi błędami w javascript. – jzilla