Konvertujte dvojnásobok na reťazec a odstráňte desatinné miesta

1. Úvod

V tomto výučbe sa pozrieme na rôzne spôsoby prevodu dvojitý hodnota do a String, pričom sa odstránia jeho desatinné miesta.

Pozrime sa, ako na to, keď chceme iba skrátiť desatinnú časť a keď ju chceme zaokrúhliť.

2. Skrátenie pomocou prenášania

Ak náš dvojitý hodnota je v rámci int rozsah, môžeme hodiť to do int. Odliatok skráti desatinnú časť, čo znamená, že ju odreže bez zaokrúhľovania.

Tento prístup je asi 10-krát rýchlejší ako ostatné prístupy, na ktoré sa pozrieme.

Raz je to int, potom to môžeme odovzdať hodnota metódana String trieda:

Reťazec skrátený = String.valueOf ((int) doubleValue);

Môžeme s istotou použiť tento prístup, keď máme zaručené, že dvojnásobná hodnota je v rozmedzí od int. ale ak to naša hodnota presiahne, casting nebude fungovať tak, ako by sme chceli.

3. Zaokrúhľovanie pomocou String.format ()

Zvyšné prístupy teraz nie sú tak obmedzené ako casting, ale majú svoje vlastné nuansy.

Ďalším prístupom je napríklad použitie súboru formát metóda String trieda. Prvý parameter metódy určuje, že formátujeme hodnotu s pohyblivou rádovou čiarkou s nulovými číslicami za desatinnou čiarkou:

Reťazec zaoblený = String.format ("%. 0f", doubleValue);

The formát metóda používa HALF_UP zaokrúhľovanie ktoré sa zaokrúhlia nahor, ak je hodnota za zlomkovou časťou 0,5 alebo vyššia. V opačnom prípade vráti číslo pred desatinnou čiarkou.

A hoci je to jednoduché, Reťazec.formát je najpomalší spôsob, ako to dosiahnuť.

4. Používanie NumberFormat.format ()

The NumberFormat trieda poskytuje aj a formát metóda podobná String triedy, ale NumberFormat je rýchlejší a spolu s ním môžeme určiť režim zaokrúhľovania, aby sme dosiahli skrátenie alebo zaokrúhlenie.

The setMaximumFractionDigits () metóda informuje formátovač, koľko zlomkových číslic za desatinnou čiarkou má zahrnúť do výstupu:

NumberFormat nf = NumberFormat.getNumberInstance (); nf.setMaximumFractionDigits (0); Reťazec zaoblený = nf.format (doubleValue);

Kuriózne je, NumberFormat nepoužíva HALF_UP predvolene. Namiesto toho používa HALF_EVEN štandardne zaokrúhľovanie, čo znamená, že sa bude zaokrúhľovať ako zvyčajne, okrem prípadov, v takom prípade vyberie najbližšie párne číslo.

Zatiaľ čo HALF_EVEN je nápomocný pri štatistickej analýze, poďme použiť HALF_UP byť dôsledný:

nf.setRoundingMode (RoundingMode.HALF_UP); Reťazec zaoblený = nf.format (doubleValue);

A môžeme to zmeniť a dosiahnuť skrátenie nastavením formátovača tak, aby používal PODLAHA namiesto toho režim zaokrúhľovania:

nf.setRoundingMode (RoundingMode.FLOOR); Reťazec skrátený = nf.format (doubleValue)

A teraz sa namiesto zaokrúhli.

5. Používanie DecimalFormat.format ()

Podobný NumberFormat, DecimalFormat triedy možno použiť na formátovanie dvojitý hodnoty. Namiesto nastavenia výstupného formátu pomocou volaní metód však formátorovi môžeme povedať, aký výstup chceme, ak poskytneme konštruktoru konkrétny vzor:

DecimalFormat df = nový DecimalFormat ("#, ###"); df.setRoundingMode (RoundingMode.HALF_UP); Reťazec zaoblený = df.format (doubleValue);

Vzor „#, ###“ znamená, že chceme, aby formátovač vrátil iba celočíselnú časť vstupu. Signalizuje tiež, že chceme, aby boli číslice zoskupené do troch oddelené čiarkou.

Tu platia rovnaké predvolené hodnoty zaokrúhľovania, takže ak chceme na výstup priviesť skrátenú hodnotu, môžeme nastaviť režim zaokrúhľovania na PODLAHA:

df.setRoundingMode (RoundingMode.FLOOR); Reťazec skrátený = df.format (doubleValue)

6. Používanie BigDecimal.toString ()

Posledný prístup, na ktorý sa pozrieme, je BigDecimal, ktorú zahrnieme preto vystupuje to NumberFormat a DecimalFormat pre väčšie dvojitýs.

Môžeme použiť BigDecimal‘S setScale metóda na určenie, či chceme zaokrúhliť alebo skrátiť:

double largeDouble = 345_345_345_345.56; BigDecimal big = nový BigDecimal (largeDouble); big = big.setScale (0, RoundingMode.HALF_UP);

Zapamätaj si to BigDecimals sú nemenné, takže podobne ako reťazce musíme hodnotu resetovať.

A potom iba zavoláme BigDecimal‘S natiahnuť:

Reťazec zaoblený = big.toString ();

7. Záver

V tomto návode pozreli sme sa na rôzne spôsoby, ako môžeme previesť a dvojitý do a String pri odstraňovaní desatinných miest. Poskytli sme prístupy, ktoré by vydávali zaokrúhlené alebo skrátené hodnoty.

Vzorky a referenčné hodnoty sú ako obvykle k dispozícii na serveri GitHub.