Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [JavaScript] Działania w JavaScript
Forum PHP.pl > Forum > Przedszkole
kkuubbaa88
witam

mam problem z najprostszymi działaniami w javascript. otóz mam coś takiego:

[JAVASCRIPT] pobierz, plaintext
  1. var zmienna = 100;
  2. var wartosc = 1;
  3. var odejmij = wartosc / zmienna;
  4. var czas = setInterval(function(){
  5. zmienna = zmienna - 1;
  6. wartosc = wartosc - odejmij;
  7. document.getElementById('galeria_test').innerHTML = wartosc;
  8. document.getElementById('galeria_test2').innerHTML = zmienna;
  9. if (zmienna == 1){
  10. clearTimeout(czas);
  11. }
  12. },1);
[JAVASCRIPT] pobierz, plaintext


niby wszystko dziala poprawnie ale niestety... gdy daje alert wartosc odejmij to faktycznie mam '0.01' ale koncowy wynik odejmowania jest stylu '0.009999999999999247'.

dlaczego sa takie niedokłądnosci ? co zrobic, aby odejmowalo to co trzeba i był z tego prawidłowy wynik ?

gdy przerabiam to na prostszą wersję:

[JAVASCRIPT] pobierz, plaintext
  1. var zmienna = 100;
  2. var wartosc = 1;
  3. var odejmij = wartosc / zmienna;
  4. var czas = setInterval(function(){
  5. wartosc = wartosc - odejmij;
  6. document.getElementById('galeria_test').innerHTML = wartosc;
  7. document.getElementById('galeria_test2').innerHTML = zmienna;
  8. if (wartosc <= 0){
  9. clearTimeout(czas);
  10. }
  11. },1);
[JAVASCRIPT] pobierz, plaintext


otrzymuje calkiem kosmos '-7.528699885739343e-16'
mortus
Niestety jest to naturalne. Przyczyna i rozwiązanie problemu są opisane w tym artykule w sekcji "Zaokrąglanie liczb w JavaScript".
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.