Cześć,
Pewnie pytanie dla wielu z Was wyda się banalne ale ja przyznam się bez bicia, poległem. Muszę zaokrąglić liczbę do 2 miejsc po przecinku z tym że zaokrąglenie zawsze musi być w górę. Dla przykładu, mam sobie wartość zmienno przecinkową: 123.914. Wywołując na niej metodę toFixed(2) otrzymam zaokrąglenie do wartości 123.91. Z matematycznego punktu widzenia jest to jak najbardziej prawidłowe i nie ma co się czepiać. Natomiast w moim przypadku nie mogę tego tak zrobić. Oczekiwanie jest aby zaokrąglenie było do wartości 123,92 a nie 91. I teraz zastanawiam się, czy jest jakaś gotowa metoda która w ten sposób to zrobi czy muszę rzeźbić coś swojego. Pomóżcie proszę.
Chyba, że czegos nie dostrzegam, ale toFixed
daje taki efekt.
https://www.w3schools.com/jsref/jsref_tofixed.asp
lion137 napisał(a):
Chyba, że czegos nie dostrzegam, ale
toFixed
daje taki efekt.
https://www.w3schools.com/jsref/jsref_tofixed.asp
Nie. Nie daje. Zaokrąglenie da 123.91, zamiast 123.92.
Rzeczywiście, ale w tym rozwiązaniu, jeszcze nie wszystko stracone, jakby dodać, 0.005
do 123.91
, to toFixed(2)
zwróci co trzeba.
lion137 napisał(a):
Rzeczywiście, ale w tym rozwiązaniu, jeszcze nie wszystko stracone, jakby dodać,
0.005
do123.91
, totoFixed(2)
zwróci co trzeba.
To jest jeszcze mniej czytelne niż z mnożeniem przez potęgę liczby 10, a potem dzieleniem przez nią^^
Cześć Panowie. Jednak nie do końca mi coś działa. Owszem, przykład z pierwszego mojego posta jest ok i działa ale dziś trafiłem na przypadek gdzie to nie zadziałało. Wartość 4129.64. Proste działanie i proste dzielenie na 2 ponieważ powinno zwrócić równo: 2064,84. Ale niestety:
Math.ceil((4129.64 / 2) * 100) / 100
zwraca mi 2064.83 :(.
Algorytm jest prosty. Mam pewną liczę którą muszę podzielić na 2 i zaokrąglić do dwóch miejsc po przecinku z tym warunkiem że zawsze ma zaokrąglać w górę. Czyli jeżeli mam np liczbę: 247.828 która po podzieleniu na 2 da nam 123,914 to ma mi zaokrąglić do liczby 123.92 a nie 123.91. I generalnie ta funkcja Math.ceil((247.828 / 2) * 100) / 100 działa. Ale dziś właśnie natrafiłem na przypadek gdzie dzielenie było proste ponieważ wychodziły równiutkie dwie części (4129.64) a ja dostałem zamiast 2064,82, wartość 2064,83 i tu jest błąd ponieważ jeżeli liczbę da się podzielić równo na dwie części to nie ma tu czego zaokrąglać w górę bo i po co. Zaokrąglanie powinno zadziałać tylko jeżeli po dzieleniu wychodzi jakaś wartość z większą ilością miejsc po przecinku albo jeżeli dzielę jakąś liczbę z większą ilością miejsc po przecinku. Tu akurat było prosto ponieważ dzieliłem na 2 liczbę z dwoma miejscami po przecinku która dzieliła się ładnie na dwie równe części.