Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Błędne zaokrąglenie
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
maston
Witam.

Mam taki oto skrypt :
  1. function Round(Number) {
  2. return (Math.round(parseFloat(Number) * 1000) / 1000).toFixed(2);
  3. }
  4. var value = '587.175';
  5. document.writeln(Round(value));
  6. document.writeln(parseFloat(parseFloat(value).toFixed(2)));


Poprawny wynik powinien wynosić 587.18

Nie wiem dlaczego Js pokazuje mi uparcie 587.17

Spotkał się już ktoś może z takim przypadkiem? Podejrzewam, że ma to związek z arytmetyką bitów liczb zmiennoprzecinkowych... ale czy idzie to jakoś "naprawić"?

Dzięki z góry smile.gif
skowron-line
http://floating-point-gui.de/errors/rounding/ zerknij tutaj
maston
dzięki smile.gif

pomogło użycie BigDecimal smile.gif

  1. new BigDecimal("587.175").setScale(2, BigDecimal.prototype.ROUND_HALF_UP)


wyświetla 587.18 smile.gif
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.