Przycinanie i zaokrąglanie Double do określonej dokładności

0

Witam

Chciałbym wiedzieć jak "przyciąć" liczbę double aby zamiast wartości np. 0.131353452141 była wartością 0.131 ,
a także jak ją zaokrąglić do 3 miejsc po przecinku .

Do tej pory wiem że mogę :

  1. Pomnożyć przez np. 1000 potem ( zaokrąglić - ale jak?) a później podzielić przez 1000 i otrzymam 3 miejsca po przecinku ,czyli przycięcie
  2. Przez klasę NumberFormat , no ale tu dostaje Stringa a interesuje mnie double

Obie powyższe metody przycinają liczbę, a szukam:
1.Gotowych klas które przycinają liczbę do żądanej precyzji
2.Gotowych klas które zaokrąglają do danego miejsca po przecinku

Serdeczne dzięki za przeczytanie posta i ewentualną pomoc

Pozdrawiam i czekam na odpowiedzi

0

round() zaokrągla do 1 albo do 0

0
Microb napisał(a)

Chciałbym wiedzieć jak "przyciąć" liczbę double aby zamiast wartości np. 0.131353452141 była wartością 0.131 ,
a także jak ją zaokrąglić do 3 miejsc po przecinku .

  1. Po co?
  2. Jesteś pewien, ze się da?
    http://osilek.mimuw.edu.pl/index.php?title=WDP_Reprezentacja_liczb#U.C5.82amki
1

Co chcesz naprawdę uzyskać? Wypisanie liczby 123.77777794567 w postaci 123.777 czy zastąpienie liczby 123.77777794567 liczbą 123.777? To drugie jest niemożliwe.
Math.floor(x1000)/1000 może dać dobre przybliżenie dla liczb dodatnich, dla ujemnych Math.ceil(x1000)/1000.

0

Zacznę najpierw od odniesienia się do odpowiedzi Pana z różowym pieskiem w fotografii ( którego post został usunięty ). Nie było moim zamiarem nikogo tak zdenerwować, choć na pewno dla wielu takie braki są śmieszne bądź wręcz irytujące. Ja odpowiedź Pana zrozumiałem jako użycie metody z Klasy Math , wpisując Math. kompilator wyświetlił mi listę dostępnych metod w których szereg nie wchodził roundTo() . Więc zapewne nie chodzi o tę klasę choć tej zaproponowanej przez pana nie wiem jak użyć , tzn nie wiem jak się do nie dostać( Co zapewne dla wielu jest przerażające - i szczerze mi wstyd z tego powodu )
// Jeżeli komuś się chcę to oczywiście będę bardzo wdzięczny za wyjaśnienie

@unikalna_nazwa - round z klasy Math liczby mniejsze od 1 i większe od 0 zaokrągla do 0 lub do 1 , a na takich przykładach testowałem , moja wina nie precyzje opisałem round zaokrągla do liczb całkowitych

Padło pytanie po co tego potrzebuje ,dla wiedzy.
Nie potrzebuje wypisania double z daną precyzją a uzyskanie zaokrąglenia / przycięcia liczby , a dokładnie odpowiedzi , podpowiedzi jak można było by to wykonać (czym i jak, opcjonalnie na jakiej zasadzie to działa)

@bogdans Użycie floor i ceil rzeczywiście działa . Dziękuje

**A co do zaokrąglania **, wyobraziłem sobie funkcję która by np. liczbę 0.209 zaokrąglając do 2 miejsca po przecinku zamieniła 9 na 1 i jako wynik dała 0.21 . Jest taka?

Jeszcze raz dziękuje wszystkim za odpowiedzi , Panu z różowym pieskiem wbrew pozorom także choć chyba nie potrzebne jest tak się unosić( zdaje sobie sprawę że mój stan wiedzy a czasami proces jej przyswajania bywa żenujący )

Pozdrawiam

1 użytkowników online, w tym zalogowanych: 0, gości: 1