Hoe Double in integer en decimale delen te scheiden

1. Overzicht

In deze tutorial zullen we verschillende methoden onderzoeken om gehele getallen en decimale delen van drijvende-kommatypen in Java te scheiden, namelijk vlotter en dubbele.

2. Problemen met typen met drijvende komma

Laten we beginnen met het bekijken van een simpele breuk, en een naïeve manier om de scheiding uit te voeren, via gieten:

dubbel doubleNumber = 24.04; int intPart = (int) doubleNumber; System.out.println ("Dubbel nummer:" + dubbel nummer); System.out.println ("Integer Part:" + intPart); System.out.println ("Decimal Part:" + (doubleNumber - intPart));

Als we de bovenstaande code proberen uit te voeren, krijgen we het volgende:

Dubbel getal: 24.04 Geheel getal: 24 decimaal gedeelte: 0,03999999999999915

In tegenstelling tot onze verwachting, drukt de uitvoer het decimale gedeelte niet correct af. Daarom zijn de drijvende-kommagetallen niet geschikt voor berekeningen waarbij afrondingsfouten niet kunnen worden getolereerd.

3. Eerste benadering: splitsen van het Draad

Laten we eerst het decimale getal converteren naar een Draad gelijkwaardig. Dan kunnen we de Draad bij de decimale komma index.

Laten we dit begrijpen met een voorbeeld:

dubbel doubleNumber = 24.04; String doubleAsString = String.valueOf (doubleNumber); int indexOfDecimal = doubleAsString.indexOf ("."); System.out.println ("Dubbel nummer:" + dubbel nummer); System.out.println ("Geheel getal:" + doubleAsString.substring (0, indexOfDecimal)); System.out.println ("Decimaal deel:" + doubleAsString.substring (indexOfDecimal)); 

De output van de bovenstaande code is:

Dubbel getal: 24.04 Geheel getal: 24 decimaal gedeelte: .04

De output is precies wat we verwachten. Maar het probleem hier is de beperking van het gebruik van een tekenreeks - wat betekent dat we nu geen andere rekenkundige bewerkingen kunnen uitvoeren.

4. Tweede benadering: gebruiken BigDecimal

De BigDecimal class in Java geeft de gebruiker volledige controle over het afrondingsgedrag. Deze klasse biedt ook bewerkingen voor rekenkunde, schaalmanipulatie, afronding, vergelijking, hashing en formaatconversie.

Laten we gebruiken BigDecimal om de gehele en decimale delen van een drijvende-kommagetal te krijgen:

dubbel doubleNumber = 24.04; BigDecimal bigDecimal = nieuwe BigDecimal (String.valueOf (doubleNumber)); int intValue = bigDecimal.intValue (); System.out.println ("Dubbel getal:" + bigDecimal.toPlainString ()); System.out.println ("Integer Part:" + intValue); System.out.println ("Decimal Part:" + bigDecimal.subtract (new BigDecimal (intValue)). ToPlainString ());

De output zal zijn:

Dubbel getal: 24.04 Geheel getal: 24 decimaal gedeelte: 0,04

Zoals we hierboven kunnen zien, is de output zoals verwacht. We kunnen ook rekenkundige bewerkingen uitvoeren met behulp van methoden in BigDecimal klasse.

5. Conclusie

In dit artikel hebben we verschillende methoden besproken om gehele getallen en decimale delen van typen met drijvende komma te scheiden. We bespraken ook de voordelen van gebruik BigDecimal voor drijvende-kommaberekeningen.

Ook bespreekt onze gedetailleerde tutorial over BigDecimal en BigInteger in Java meer kenmerken en gebruiksscenario's van de twee klassen.

Ten slotte is de volledige broncode voor deze tutorial beschikbaar op GitHub.


$config[zx-auto] not found$config[zx-overlay] not found