Zaokrąglanie do dwóch miejsc po przecinku zawsze w górę

Zaokrąglanie do dwóch miejsc po przecinku zawsze w górę
L3
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 3 lata
0

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ę.

serek
  • Rejestracja:około 11 lat
  • Ostatnio:10 minut
  • Postów:1472
3
Kopiuj
Math.ceil(123.914 * 100) / 100;
lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4896
0

Chyba, że czegos nie dostrzegam, ale toFixed daje taki efekt.
https://www.w3schools.com/jsref/jsref_tofixed.asp


edytowany 1x, ostatnio: lion137
serek
  • Rejestracja:około 11 lat
  • Ostatnio:10 minut
  • Postów:1472
0
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.

lion137
  • Rejestracja:około 8 lat
  • Ostatnio:3 minuty
  • Postów:4896
2

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.


edytowany 1x, ostatnio: lion137
serek
  • Rejestracja:około 11 lat
  • Ostatnio:10 minut
  • Postów:1472
0
lion137 napisał(a):

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.

To jest jeszcze mniej czytelne niż z mnożeniem przez potęgę liczby 10, a potem dzieleniem przez nią^^

cerrato
Moderator Kariera
  • Rejestracja:około 7 lat
  • Ostatnio:około 2 godziny
  • Lokalizacja:Poznań
  • Postów:8775
1

To jest jeszcze mniej czytelne

Pytanie - czy działa zgodnie z oczekiwaniami :P


L3
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 3 lata
0

Dzięki @serek. Dokładnie o coś takiego chodziło.

L3
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 3 lata
0

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:

Kopiuj
Math.ceil((4129.64 / 2) * 100) / 100

zwraca mi 2064.83 :(.

edytowany 1x, ostatnio: lukpio3
BO
Zwróć uwagę na nawiasy :)
Stefan_3N
  • Rejestracja:około 6 lat
  • Ostatnio:23 dni
  • Postów:145
0

Czyli jaki algorytm masz zrealizować?
Sprecyzuj algorytm, a potem go zapisz.
Twój algorytm jest taki -

  1. Odrzucam wszystko od trzeciego miejsca po przecinku
  2. Dodaję 0.01, chyba że? (że to co odrzuciłem było zerem).

Tak ma to działać?


L3
  • Rejestracja:prawie 15 lat
  • Ostatnio:ponad 3 lata
0

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.

edytowany 1x, ostatnio: lukpio3
Stefan_3N
  • Rejestracja:około 6 lat
  • Ostatnio:23 dni
  • Postów:145
1

Się nie zrozumieliśmy :-). Ja Ci sugeruję, żebyś sobie ten algorytm sprecyzował (może np. na kartce). Starał się wyłuskać z niego sedno problemu. I jak już to będziesz miał - to go zapisał w znanym Ci języku.
Wszelkie kombinacje z mnożeniem i dzieleniem, dodawaniem czegokolwiek, jeśli naprawdę zależy Ci na pewności działania - to tu raczej odpadają, bo operacje nie są wykonywane na liczbach rzeczywistych, tylko na ich binarnych reprezentacjach.
Dlatego zaproponowałem Ci wyżej rozwiązanie :-)

  1. Zaokrąglasz w dół do dwóch miejsc po przecinku (zamieniasz na text i odrzucasz wszystko po drugim znaku za kropką).
  2. To co Ci wyszło odejmujesz od liczby wyjściowej. To będzie reszta. Jeśli ta reszta jest zerem, to wynik z punku 1 jest wynikiem właściwym.
  3. Jeśli nie - to do wyniku z pkt 1 dodajesz 0.01 i to jest Twój wynik.

Czy tak ma to działać? Jeśli tak - to tylko zapisz to w kodzie i już.


Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)