V tomto tutoriálu se dozvíme, jak převést řetězec v jazyce Java na datový typ double:

Naučíme se používat následující metody pro převod řetězce na dvojnásobnou hodnotu v jazyce Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Metody pro převod řetězce Java na double

Existují určité scénáře, kdy v našem programu v Javě musíme provést nějakou aritmetickou operaci s číselnou hodnotou, jako je výpočet účtu, výpočet úroku z částky vkladu atd. Vstup pro tento program je však k dispozici v textovém formátu, tj. Datový typ Java String .

Například, pro výpočet účtů za potraviny - cena výrobku a počet zakoupených jednotek přicházejí jako vstup z textového pole webové stránky nebo z textové oblasti webové stránky v textovém formátu, tj. datovém typu Java String. V takových scénářích musíme tento String nejprve převést na získání čísel ve tvaru Primitivní datový typ Java double .

Podívejme se na jednotlivé metody podrobně jednu po druhé.

#1) Metoda Double.parseDouble()

Metodu parseDouble() poskytuje třída Double. Třída Double se nazývá Wrapper, protože obaluje hodnotu primitivního typu double do objektu.

Podívejme se na signaturu metody níže:

public static double parseDouble(String str) throws NumberFormatException

Toto je statická metoda třídy Double, která vrací datový typ double reprezentovaný zadaným řetězcem String.

Zde se 'str' je řetězec obsahující reprezentaci dvojnásobné hodnoty, která má být analyzována, a vrací dvojnásobnou hodnotu reprezentovanou argumentem.

Tato metoda vyhodí výjimku NumberFormatException pokud řetězec String neobsahuje analyzovatelný double.

Například, uvažujme scénář, kdy chceme vypočítat cenu po obdržení slevy z původní ceny položek.

Vstupní hodnoty, jako je původní cena položky a sleva, přicházejí z vašeho fakturačního systému jako text a my chceme nad těmito hodnotami provést aritmetickou operaci pro výpočet nové ceny po odečtení slevy od původní ceny.

Podívejme se, jak použít metodu Double.parseDouble() k parsování hodnoty String na double v následující ukázce kódu:

 package com.softwaretestinghelp; /** * Tato třída demonstruje ukázkový kód pro převod řetězce na dvojnásobek v java programu * pomocí metody Double.parseDouble() * * @autor * */ public class StringToDoubleDemo1 { public static void main(String[] args) { // Přiřazení "500.00" do proměnné String originalPriceStr String originalPriceStr = "50.00D"; // Přiřazení "30" do proměnné String originalPriceStr StringdiscountStr = "+30.0005d"; System.out.println("originalPriceStr : "+originalPriceStr); System.out.println("discountStr : "+discountStr); // Předejte originalPriceStr, tj. řetězec "50.00D", jako parametr funkce parseDouble() // pro převod řetězce 'originalPriceStr' na double // a přiřaďte jej proměnné double originalPrice double originalPrice = Double.parseDouble(originalPriceStr); // Předejte discountStrtj. String "30.005d" jako parametr funkce parseDouble() // převést hodnotu řetězce 'discountStr' na double // a přiřadit ji proměnné double discount double discount = Double.parseDouble(discountStr); System.out.println("Vítejte, naše původní cena je : $"+originalPrice+""); System.out.println("Nabízíme slevu : "+discount+"%"); //Vypočítat novou cenu po slevě double newPrice =originalPrice - ((originalPrice*discount)/100); //Vypište novou cenu po získání slevy na konzoli System.out.println("Užijte si novou atraktivní cenu po slevě: $"+newPrice+""); } } 

Zde je výstup programu:

originalPriceStr :50.00D

discountStr :+30.0005d

Vítejte, naše původní cena je : $50.0

Nabízíme slevu :30.0005%

Užijte si novou atraktivní cenu po slevě : $34.99975

Zde je řetězec "50.00D", kde D označuje řetězec jako dvojnásobnou hodnotu.

 String originalPriceStr = "50.00D"; 

Tento řetězec originalPriceStr, tj. "50.00D", je předán jako parametr metodě parseDouble() a jeho hodnota je přiřazena do proměnné double originalPrice.

 double originalPrice = Double.  parseDouble  (originalPriceStr); 

Metoda parseDouble() převede hodnotu String na double a odstraní znaky "+" nebo "-" a 'D','d'.

Proto když na konzoli vypíšeme originalPrice:

 Systém.  ven  .println("Vítejte, naše původní cena je : $"+originalPrice+""); 

Na konzole se zobrazí následující výstup:

Vítejte, naše původní cena je : $50.0

Podobně pro String discountStr = "+30.0005d"; String "+30.0005d" lze převést na double pomocí metody parseDouble() jako:

 double discount = Double.  parseDouble  (slevaStr); 

Proto když na konzoli vypíšeme slevu.

 System.out.println("Nabízíme slevu : "+sleva+"%"); 

Na konzole se zobrazí následující výstup:

 Nabízíme slevu :30.0005% 

Dále se v programu provádějí aritmetické operace s těmito číselnými hodnotami.

#2) Metoda Double.valueOf()

metodu valueOf() poskytuje obalová třída Double.

Podívejme se na signaturu metody níže:

public static Double valueOf(String str) throws NumberFormatException

Tato statická metoda vrací objekt datového typu Double s hodnotou double, která je reprezentována zadaným řetězcem String str.

Zde je parametr 'str' řetězec obsahující dvojnásobnou reprezentaci, která má být analyzována, a vrací hodnotu Double reprezentovanou argumentem v desítkové soustavě.

Tato metoda vyhodí výjimku NumberFormatException pokud řetězec String neobsahuje číselnou hodnotu, kterou lze analyzovat.

Pokusme se pochopit, jak tuto metodu Double.valueOf() používat, pomocí následujícího ukázkového programu:

 package com.softwaretestinghelp; /** * Tato třída demonstruje ukázkový kód pro převod řetězce na dvojnásobek java programu * pomocí metody Double.valueOf() * * @autor * */ public class StringToDoubleDemo2 { public static void main(String[] args) { // Přiřazení "1000.0000d" do řetězcové proměnné depositAmountStr String depositAmountStr = "1000.0000d"; // Přiřazení "5.00D" do řetězcové proměnné interestRate StringinterestRateStr = "+5.00D"; // Přiřazení "2" řetězcové proměnné yearsStr String yearsStr = "2"; System.out.println("depositAmountStr : "+depositAmountStr); System.out.println("interestRateStr : "+interestRateStr); System.out.println("yearsStr : "+yearsStr); // Předání depositAmountStr tj. řetězce "1000.0000d" jako parametru funkci valueOf() // pro převod hodnoty řetězce 'depositAmountStr' na double // a přiřazení.do dvojnásobné proměnné depositAmount Double depositAmount = Double.valueOf(depositAmountStr); // Předat interestRateStr tj. String "5.00D" jako parametr proměnné valueOf() // převést hodnotu řetězce 'interestRateStr' na double // a přiřadit ji do dvojnásobné proměnné discount Double interestRate = Double.valueOf(interestRateStr); // Předat yearsStr tj. String "2" jako parametr proměnné valueOf() // převést řetězec string'yearsStr' na double // a přiřadit ji do proměnné double discount Double years = Double.valueOf(yearsStr); System.out.println("Vítejte v ABC Bank. Děkujeme za vklad : $"+ vkladová částka+" u naší banky"); System.out.println("Naše banka nabízí atraktivní úrokovou sazbu na 1 rok : "+úroková sazba+"%"); /Vypočítat úrok po 2 letech z částky vkladu Double interestEarned =((depositAmount*interestRate*years)/100); System.out.println("Po "+years+" obdržíte celkem $"+interestEarned+""); } } 

Zde je výstup programu:

depositAmountStr :1000.0000d

interestRateStr :+5.00D

yearsStr :2

Vítejte v ABC Bank. Děkujeme za vklad : $1000.0 v naší bance.

Naše banka nabízí atraktivní úrokovou sazbu na 1 rok :5,0%

Celkový úrok, který obdržíte po 2,0, je 100,0 USD.

Zde přiřazujeme hodnoty proměnným typu String:

 String depositAmountStr = "1000.0000d"; String interestRateStr = "+5.00D"; String yearsStr = "2"; 

K převodu těchto hodnot na Double použijte metodu valueOf(), jak je uvedeno níže.

 Double depositAmount = Double.  valueOf  (depositAmountStr); 

Pro další aritmetický výpočet použijeme stejné hodnoty jako:

 Double interestEarned = ((depositAmount*interestRate*years)/100); 

#3) Metoda DecimalFormat Parse ()

Za tímto účelem nejprve načteme instanci třídy NumberFormat a použijeme metodu parse() třídy NumberFormat.

Podívejme se na signaturu metody níže:

public Number parse(String str) throws ParseException

Tato metoda analyzuje zadaný text. Použije řetězec od počáteční pozice a vrátí číslo.

Tato metoda vyhodí výjimku ParseException pokud začátek řetězce není v analyzovatelném řetězci.

Podívejme se na ukázkový program níže. Tento ukázkový kód analyzuje formátovaný textový řetězec obsahující dvojnásobnou hodnotu pomocí metody parse():

 package com.softwaretestinghelp; import java.text.DecimalFormat; import java.text.NumberFormat; import java.text.ParseException; /** * Tato třída demonstruje ukázkový kód pro převod řetězce na dvojčíslí v java programu * pomocí metody DecimalFormat parse () * * @autor * */ public class StringToDoubleDemo3 { public static void main(String [] args) throws ParseException { // Přiřazení "5,000,00.00" řetězciproměnná pointsString String pointsString = "5,000,00.00"; System.out.println("pointsString : "+pointsString); // Předejte řetězec pointsString, tj. řetězec "+5,000,00.00", jako parametr metodě // DecimalFormat.getNumberInstance(). parse() // pro převod řetězce pointsString na dvojnásobek // a přiřaďte jej dvojnásobné proměnné points NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum =num.parse(pointsString); double points = pointsNum.doubleValue(); System.out.println("Gratulujeme ! Získali jste : "+points+" bodů!"); } } 

Zde je výstup programu:

bodyString :5,000,00.00

Gratulujeme ! Získali jste :500000.0 bodů!

Zde se formátovaný text přiřadí do proměnné string takto:

 String pointsString = "5,000,00.00"; 

Tento formátovaný text "5,000,00.00" je předán jako argument metodě num.parse().

Předtím je vytvořena instance třídy NumberFormat pomocí DecimalFormat. getNumberInstance ().

 Metoda DecimalFormat.getNumberInstance(). NumberFormat num = DecimalFormat.getNumberInstance(); Number pointsNum = num.parse(pointsString); 

Dvojnásobnou hodnotu tedy získáme voláním metody doubleValue (), jak je uvedeno níže.

 double points = pointsNum.doubleValue(); 

#4) Konstruktor New Double()

Dalším způsobem převodu řetězce Java String na double je použití konstruktoru třídy Double(String str).

public Double(String str) hodí NumberFormatException

Tento konstruktor konstruuje a vrací objekt Double, který má hodnotu typu double reprezentovanou zadaným řetězcem String.

str je řetězec pro převod na Double

Tato metoda vyhodí výjimku nazvanou NumberFormatException pokud řetězec String nemá analyzovatelnou číselnou hodnotu.

Pokusme se pochopit, jak tento konstruktor Double (String str) použít pomocí následujícího ukázkového programu, který vypočítá plochu kruhu tak, že nejprve převede poloměr z řetězce String na double.

 package com.softwaretestinghelp; /** * Tato třída demonstruje ukázkový kód pro převod řetězce na dvojnásobek v java programu * pomocí konstruktoru new Double(String str) * * @autor * */ public class StringToDoubleDemo4 { public static void main(String[] args) { // Přiřazení "+15.0005d" do řetězcové proměnné radiusStr String radiusStr = "+15.0005d"; System.out.println("radiusStr : "+radiusStr); // Předání radiusStrtj. řetězec "+15.0005d" jako parametr funkce new Double() // pro převod řetězcové hodnoty radiusStr na double // a její přiřazení do dvojité proměnné radius double radius =  nový  Dvojitý  (radiusStr)  .doubleValue(); System.out.println("Poloměr kružnice : "+poloměr+" cm"); /Vypočítáme plochu kružnice double area = (3,14*(poloměr*poloměr)); System.out.println("Plocha kružnice : "+area+" cm"); } } 

Zde je výstup programu:

radiusStr :+15.0005d

Poloměr kruhu :15,0005 cm

Plocha kruhu :706,5471007850001 cm

Ve výše uvedeném programu je hodnota poloměru kružnice přiřazena proměnné String:

 String radiusStr = "+15.0005d"; 

Pro výpočet plochy kruhu se poloměr převede na hodnotu double pomocí konstruktoru Double(), který vrací hodnotu datového typu Double. Poté se vyvolá metoda doubleValue() pro získání hodnoty primitivního data typu double, jak je znázorněno níže.

 double radius =  nový  Double (radiusStr).doubleValue(); 

Poznámka: Konstruktor Double(String str) je od Javy 9.0 zastaralý, proto je Double ve výše uvedeném příkazu přeškrtnutý.

Proto je tento způsob nyní méně preferován. Tím jsme se zabývali všemi metodami převodu řetězce Java String na primitivní datový typ Java Double.

Podívejme se na některé z nejčastěji kladených otázek týkajících se metody převodu řetězce na dvojčíslí.

Často kladené otázky

Q #1) Můžeme v Javě převést řetězec na double?

Odpověď: Ano , v jazyce Java lze převod řetězce na dvojnásobek provést pomocí následujících metod třídy Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Otázka č. 2) Jak se z řetězce stane dvojník?

Odpověď: Java nabízí různé metody pro přeměnu řetězce na dvojčíslí.

Níže jsou uvedeny metody třídy Java:

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)

Q #3) Je v Javě double?

Odpověď: Ano . Java poskytuje různé primitivní datové typy pro ukládání číselných hodnot, jako jsou short, int, double atd. Double je primitivní datový typ Javy pro reprezentaci čísla s pohyblivou řádovou čárkou. Tento datový typ zabírá 8 bajtů pro uložení s 64bitovou přesností s pohyblivou řádovou čárkou. Tento datový typ je běžnou volbou pro reprezentaci desetinných hodnot.

Q #4) Co je to skener v jazyce Java?

Odpověď: Java poskytuje třídu java.util.Scanner pro získávání vstupních dat od uživatele. Má různé metody pro získávání vstupních dat různých typů. Například, nextLine() slouží ke čtení datové hodnoty typu String. Pro čtení datové hodnoty typu double slouží metoda nextDouble().

Závěr

V tomto tutoriálu jsme si ukázali, jak v jazyce Java převést datový typ String na primitivní datový typ double pomocí metod následujících tříd a jednoduchých příkladů.

  • Double.parseDouble(String)
  • Double.valueOf(String)
  • DecimalFormat parse()
  • new Double(String s)
Posunout nahoru