Pretvori dvostruko u niz uklanjanjem decimalnih mjesta

1. Uvod

U ovom uputstvu ćemo pogledati različiti načini pretvaranja a dvostruko vrijednost prema a Niz, uklanjajući njegova decimalna mjesta.

Pogledat ćemo kako to učiniti kada želimo samo skratiti decimalni dio i kada ga želimo zaokružiti.

2. Skraćivanje pomoću lijevanja

Ako je naša dvostruko vrijednost je unutar int domet, možemo baci ga na int. Glumačka postava skraćuje decimalni dio, što znači da ga odreže bez ikakvog zaokruživanja.

Ovaj je pristup oko 10 puta brži od ostalih pristupa koje ćemo pogledati.

Jednom kad je int, onda ga možemo proslijediti na vrijednost metodana Niz razred:

Niz skraćen = String.valueOf ((int) doubleValue);

Ovaj pristup možemo pouzdano koristiti kada nam je zajamčeno da je dvostruka vrijednost unutar raspona od int. Ali ako naša vrijednost premaši to, lijevanje neće raditi onako kako bismo željeli.

3. Zaokruživanje pomoću String.format ()

Preostali pristupi nisu toliko ograničeni kao lijevanje, ali imaju svoje nijanse.

Na primjer, drugi pristup je korištenje format metoda Niz razred. Prvi parametar metode navodi da formatiramo vrijednost s pomičnim zarezom s nula znamenki nakon decimalne točke:

Niz zaokružen = String.format ("%. 0f", doubleValue);

The format metoda koristi POLUVREME zaokruživanje što će se zaokružiti ako je vrijednost nakon razlomljenog dijela 0,5 ili veća. U suprotnom, vraća broj ispred decimalne točke.

I dok je jednostavno, String.format je najsporiji način za to.

4. Korištenje NumberFormat.format ()

The Format broja razred također pruža a format metoda slična Niz razred, ali Format broja je brži i pomoću njega možemo odrediti način zaokruživanja kako bismo postigli skraćivanje ili zaokruživanje.

The setMaximumFractionDigits () metoda govori oblikovaču koliko razlomljenih znamenki nakon decimalne točke treba uključiti u izlaz:

NumberFormat nf = NumberFormat.getNumberInstance (); nf.setMaximumFractionDigits (0); Niz zaokružen = nf.format (doubleValue);

Znatiželjno, Format broja ne koristi POLUVREME prema zadanim postavkama. Umjesto toga, koristi POL_EVEN zaokruživanje prema zadanim postavkama, što znači da će se zaokružiti kao i obično, osim na .5, u tom će slučaju odabrati najbliži paran broj.

Dok POL_EVEN je korisna sa statističkom analizom, poslužimo se POLUVREME biti dosljedan:

nf.setRoundingMode (RoundingMode.HALF_UP); Niz zaokružen = nf.format (doubleValue);

I, to možemo promijeniti i postići skraćivanje postavljanjem oblikovača da koristi KAT Umjesto toga način zaokruživanja:

nf.setRoundingMode (RoundingMode.FLOOR); Niz skraćen = nf.format (doubleValue)

A sada će skratiti umjesto okruglog.

5. Korištenje DecimalFormat.format ()

Slično Format broja, DecimalFormat klasa se može koristiti za formatiranje dvostruko vrijednosti. Međutim, umjesto postavljanja izlaznog formata pozivima metoda, oblikovatelju možemo reći kakav izlaz želimo pružiti konstruktoru određeni obrazac:

DecimalFormat df = novi DecimalFormat ("#, ###"); df.setRoundingMode (RoundingMode.HALF_UP); Niz zaokružen = df.format (doubleValue);

Uzorak "#, ###" označava da želimo da program za oblikovanje vrati samo cjelobrojni dio unosa. Također signalizira da želimo znamenke grupirane u trojke odvojene zarezom.

Ovdje se primjenjuju iste zadane vrijednosti zaokruživanja, pa ako želimo izvući skraćenu vrijednost, možemo postaviti način zaokruživanja na KAT:

df.setRoundingMode (RoundingMode.FLOOR); Niz skraćen = df.format (doubleValue)

6. Korištenje BigDecimal.toString ()

Posljednji pristup koji ćemo pogledati je BigDecimal, koju ćemo uključiti jer to izvršava Format broja i DecimalFormat za veće dvostrukos.

Možemo koristiti BigDecimal‘S setScale metoda za utvrđivanje želimo li zaokružiti ili odsjeći:

dvostruki largeDouble = 345_345_345_345.56; BigDecimal big = novi BigDecimal (largeDouble); big = big.setScale (0, RoundingMode.HALF_UP);

Zapamti to BigDecimals su nepromjenjive pa, poput Strings, moramo resetirati vrijednost.

I, onda, samo zovemo BigDecimal‘S toString:

Niz zaokružen = big.toString ();

7. Zaključak

U ovom vodiču, pogledali smo različite načine na koje možemo pretvoriti a dvostruko do a Niz dok uklanjamo decimalna mjesta. Pružili smo pristupe koji bi davali ili zaokružene ili skraćene vrijednosti.

Kao i obično, uzorci i mjerila dostupni su na GitHubu.