![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam.
Poraz pierwszy spotykam sie z tego typu problemem wiec prosze o pomoc. Napisalem prosty skrypt pobierajacy ajaxem z bazy produkty. Calosc generuje sie w formie tabelki z polami typu input (produkt, cena, ilosc, do_zaplaty). Globalnie dopiasalem cos takiego, ze po nacisnieciu entera przegladarka nie wysyla formularza tylko przelicza ilosci kwoty i podaje calkowity koszt zakupu. Logika liczenia oparta jest o Javascript/jQuery
Generalnie to dziala ale czasami pojawiają się błędy w liczeniu np: dla ceny 35.07 i ilosci 3 wynik wychodzi 105.21000000000001 dla tej samej ceny i ilosci 1 lub 2 lub 4 lub 5 jest OK przy ilosci 6 lub 12 wychodzi odpowiednio 210.42000000000002 oraz 420.84000000000003. Pytanie: dlaczego wyliczane sa te dodatkowe "000000000001","000000000002","000000000003" ? Wygooglalem ze moge uzyc toFixed(2) i raz jeszcze parseFloat ale co w tym przypadku generuje takie bledy ? za wszelkie informacje z gory dziekuje Grzegorz |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 717 Pomógł: 120 Dołączył: 18.04.2009 Ostrzeżenie: (0%) ![]() ![]() |
Cytat co w tym przypadku generuje takie bledy ? Operacje na liczbach zmiennoprzecinkowych. Tak już jest. Np. według Pythona 1.2 + 1.4 = 2.5999999999999996. Deal with it. Co innego jak masz liczby całkowite (typ int z C, integer z Pascala itp.), ale niestety JavaScript traktuje wszystkie liczby jako liczby zmiennoprzecinkowe. -------------------- |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
a mozna temu jakos zaradzic ?
Moze jakas zamiana cen (cena * 100) potem rzutowanie na int nastepnie wykonac operacje mnozenia razy ilosc i potem podzielic przez 100 i zrzutowac na float ? tylko to straszny narzut obliczen ... |
|
|
![]()
Post
#4
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
a fixed ci nie wystarczy?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 518 Pomógł: 18 Dołączył: 21.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
potestuje na roznych kwotach i ilosciach i zobacze co wyjdzie.
dziekuje za pomoc i wyjasnienie |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 08:40 |