Konvertáljon dupla karakterláncra, tizedesjegyek eltávolításával

1. Bemutatkozás

Ebben az oktatóanyagban megnézzük a a konverzió különböző módjai a kettős érték a Húr, tizedesjegyeit eltávolítva.

Megvizsgáljuk, hogyan kell csinálni, ha csak a tizedes részt akarjuk csonkítani, és amikor kerekíteni akarjuk.

2. Csonkolás Casting használatával

Ha a mi kettős értéke a int hatótávolság, tudjuk dobja egy int. A szereplők megcsonkítják a tizedes részt, vagyis lekerekítik anélkül, hogy bármilyen kerekítést végeznének.

Ez a megközelítés körülbelül tízszer olyan gyors, mint a többi megközelítés, amelyet megvizsgálunk.

Ha egyszer egy int, akkor aztán átadhatjuk a értéke módszera Húr osztály:

String csonka = String.valueOf ((int) doubleValue);

Magabiztosan alkalmazhatjuk ezt a megközelítést, ha garantáljuk, hogy a kettős érték az an tartományában van int. De ha értékünk meghaladja ezt, a casting nem úgy fog működni, mint szeretnénk.

3. Kerekítés használatával String.format ()

Most a többi megközelítés nem annyira korlátozott, mint a casting, de megvannak a maguk árnyalatai.

Például egy másik megközelítés a formátum módszere Húr osztály. A módszer első paramétere meghatározza, hogy egy lebegőpontos értéket nulla számjeggyel formázzunk a tizedespont után:

Karakterlánc lekerekítve = String.format ("%. 0f", doubleValue);

A formátum módszer használja HALF_UP kerekítés amely felkerekedik, ha a törtrész utáni érték .5 vagy annál nagyobb. Ellenkező esetben a tizedespont előtti számot adja vissza.

És bár egyszerű, Karakterlánc.formátum ennek a leglassabb módja.

4. Használata NumberFormat.format ()

A NumberFormat osztály biztosítja a formátum módszerhez hasonló Húr osztály, de NumberFormat gyorsabb, és ezzel megadhatjuk a kerekítési módot a csonkolás vagy a kerekítés elérése érdekében.

A setMaximumFractionDigits () A metódus megmondja a formázónak, hogy a tizedespont után hány tört számot kell felvenni a kimenetbe:

NumberFormat nf = NumberFormat.getNumberInstance (); nf.setMaximumFractionDigits (0); Karakterlánc kerekítve = nf.formátum (doubleValue);

Kíváncsi, NumberFormat nem használja HALF_UP alapértelmezés szerint. Ehelyett használja HALF_EVEN alapértelmezés szerint kerekítés, vagyis a normál módon kerekít, kivéve .5, ebben az esetben a legközelebbi páros számot választja.

Míg HALF_EVEN hasznos a statisztikai elemzésben, használjuk HALF_UP hogy következetes legyen:

nf.setRoundingMode (RoundingMode.HALF_UP); Karakterlánc kerekítve = nf.formátum (doubleValue);

És, ezen változtathatunk és csonkolást érhetünk el, ha a formázót beállítjuk a PADLÓ kerekítési mód helyett:

nf.setRoundingMode (RoundingMode.FLOOR); Csonka karakterlánc = nf.format (doubleValue)

És most, csonka helyett kerek.

5. Használata DecimalFormat.format ()

Hasonló NumberFormat, a DecimalFormat osztály használható formázásra kettős értékek. A kimeneti formátum metódus-hívásokkal történő beállítása helyett azonban megadhatjuk a formázónak, hogy milyen kimenetet akarunk, ha a konstruktort egy meghatározott mintával látjuk el:

DecimalFormat df = new DecimalFormat ("#, ###"); df.setRoundingMode (RoundingMode.HALF_UP); Karakterlánc lekerekítve = df.format (doubleValue);

A „#, ###” minta azt jelzi, hogy azt akarjuk, hogy a formázó csak a bemenet egész részét adja vissza. Ez azt is jelzi, hogy a hármasba csoportosított számjegyeket vesszővel akarjuk elválasztani.

Ugyanezek a kerekítési alapértelmezések érvényesek itt is, így ha csonka értéket akarunk kiadni, akkor a kerekítési módot beállíthatjuk PADLÓ:

df.setRoundingMode (RoundingMode.FLOOR); Karakterlánc csonka = df.format (doubleValue)

6. Használata BigDecimal.toString ()

Az utolsó megközelítés, amelyet megnézünk, az BigDecimal, amelyet azért fogunk beilleszteni jobban teljesít NumberFormat és DecimalFormat nagyobbhoz kettőss.

Tudjuk használni BigDecimal’S setScale módszer annak megmondására, hogy kerekíteni vagy csonkázni akarunk:

dupla nagyDupla = 345_345_345_345.56; BigDecimal big = új BigDecimal (bigDouble); big = big.setScale (0, RoundingMode.HALF_UP);

Emlékezz arra BigDecimals változhatatlanok, ezért a Stringshez hasonlóan vissza kell állítanunk az értéket.

És akkor csak hívunk BigDecimal’S Sztring:

Karakterlánc lekerekítve = big.toString ();

7. Következtetés

Ebben az oktatóanyagban megnéztük a konverzió különböző módjait kettős a Húr miközben eltávolítja a tizedesjegyeket. Olyan megközelítéseket biztosítottunk, amelyek lekerekített vagy csonka értékeket adnak ki.

Szokás szerint a minták és a referenciaértékek elérhetők a GitHubon.