Dubbele decimale opmaak in Java

Ik heb wat problemen met het opmaken van de decimalen van een dubbel. Als ik een dubbele waarde heb, b.v. 4.0, hoe formatteer ik de decimalen zodat het in plaats daarvan 4.00 is?


Antwoord 1, autoriteit 100%

Een van de manieren zou zijn om NumberFormat te gebruiken.

NumberFormat formatter = new DecimalFormat("#0.00");     
System.out.println(formatter.format(4.0));

Uitvoer:

4.00


Antwoord 2, autoriteit 33%

Met Java 8 kunt u de methode format gebruiken..: –

System.out.format("%.2f", 4.0); // OR
System.out.printf("%.2f", 4.0); 
  • f wordt gebruikt voor floating puntwaarde..
  • 2 na decimaal geeft aan, aantal decimalen na .

Voor de meeste Java-versies kunt u DecimalFormat gebruiken: –

    DecimalFormat formatter = new DecimalFormat("#0.00");
    double d = 4.0;
    System.out.println(formatter.format(d));

Antwoord 3, autoriteit 20%

Gebruik String.format:

String.format("%.2f", 4.52135);

Volgens documenten:

De landinstelling die altijd wordt gebruikt, is de landinstelling die wordt geretourneerd door Locale.getDefault().


Antwoord 4, autoriteit 9%

Met String.format kunt u dit doen:

double price = 52000;
String.format("$%,.2f", price);

Let op de komma waardoor dit verschilt van het antwoord van @Vincent

Uitvoer:

$52,000.00

Een goede bron voor opmaak is de officiële java-pagina over het onderwerp


Antwoord 5, autoriteit 3%

Je zou altijd de statische methode printf from System.out kunnen gebruiken – je zou dan de corresponderende formatter implementeren; dit bespaart veel ruimte waarin u andere voorbeelden moest doen.

Bijvoorbeeld:

System.out.format("%.4f %n", 4.0); 
System.out.printf("%.2f %n", 4.0); 

Bespaart hoopruimte, wat een behoorlijk grote bonus is, niettemin ben ik van mening dat dit voorbeeld veel beter beheersbaar is dan enig ander antwoord, vooral omdat de meeste programmeurs de printf-functie van C kennen (Java verandert de functie/methode echter enigszins) .


Antwoord 6, autoriteit 2%

double d = 4.0;
DecimalFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
System.out.println(nf.format("#.##"));

Antwoord 7

new DecimalFormat("#0.00").format(4.0d);

Antwoord 8

Een alternatieve methode is het gebruik van de setMinimumFractionDigits methode van de NumberFormat klasse.

Hier specificeert u in principe hoeveel cijfers u na de komma wilt weergeven.

Dus een invoer van 4.0 zou 4.00 opleveren, ervan uitgaande dat het door u opgegeven bedrag 2 was.

Maar als uw Double-invoer meer bevat dan het gespecificeerde bedrag, wordt het gespecificeerde minimumbedrag gebruikt en voegt u vervolgens nog een cijfer toe, afgerond naar boven/beneden

Bijvoorbeeld 4.15465454 met een minimum aantal van 2 gespecificeerd, levert 4.155

op

NumberFormat nf = NumberFormat.getInstance();
nf.setMinimumFractionDigits(2);
Double myVal = 4.15465454;
System.out.println(nf.format(myVal));

Probeer het online


Antwoord 9

U kunt een van de onderstaande methoden gebruiken

  1. Als u java.text.DecimalFormat

    gebruikt

    DecimalFormat decimalFormat = NumberFormat.getCurrencyInstance(); 
    decimalFormat.setMinimumFractionDigits(2); 
    System.out.println(decimalFormat.format(4.0));
    

    OF

    DecimalFormat decimalFormat =  new DecimalFormat("#0.00"); 
    System.out.println(decimalFormat.format(4.0)); 
    
  2. Als je het wilt converteren naar een eenvoudig tekenreeksformaat

    System.out.println(String.format("%.2f", 4.0)); 
    

Alle bovenstaande code wordt afgedrukt 4.00


Antwoord 10

Er zijn veel manieren waarop u dit kunt doen. Die worden hieronder gegeven:

Stel dat je originele nummer hieronder wordt vermeld:

 double number = 2354548.235;

Nummernotatie gebruiken:

NumberFormat formatter = new DecimalFormat("#0.00");
    System.out.println(formatter.format(number));

String.format gebruiken:

System.out.println(String.format("%,.2f", number));

DecimalFormat en patroon gebruiken:

NumberFormat nf = DecimalFormat.getInstance(Locale.ENGLISH);
        DecimalFormat decimalFormatter = (DecimalFormat) nf;
        decimalFormatter.applyPattern("#,###,###.##");
        String fString = decimalFormatter.format(number);
        System.out.println(fString);

DecimalFormat en patroon gebruiken

DecimalFormat decimalFormat = new DecimalFormat("############.##");
        BigDecimal formattedOutput = new BigDecimal(decimalFormat.format(number));
        System.out.println(formattedOutput);

In alle gevallen zal de output zijn:
2354548.23

Opmerking:

Tijdens het afronden kun je RoundingMode toevoegen aan je formatter. Hieronder vindt u enkele afrondingsmodi:

    decimalFormat.setRoundingMode(RoundingMode.CEILING);
    decimalFormat.setRoundingMode(RoundingMode.FLOOR);
    decimalFormat.setRoundingMode(RoundingMode.HALF_DOWN);
    decimalFormat.setRoundingMode(RoundingMode.HALF_UP);
    decimalFormat.setRoundingMode(RoundingMode.UP);

Dit zijn de importen:

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

Antwoord 11

Werkt 100%.

import java.text.DecimalFormat;
public class Formatting {
    public static void main(String[] args) {
        double value = 22.2323242434342;
        // or  value = Math.round(value*100) / 100.0;
        System.out.println("this is before formatting: "+value);
        DecimalFormat df = new DecimalFormat("####0.00");
        System.out.println("Value: " + df.format(value));
    }
}

Antwoord 12

Eerst NumberFormat importeren. Voeg dan dit toe:

NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();

Dit geeft je twee decimalen en een dollarteken als het om valuta gaat.

import java.text.NumberFormat;
public class Payroll 
{
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) 
    {
    int hoursWorked = 80;
    double hourlyPay = 15.52;
    double grossPay = hoursWorked * hourlyPay;
    NumberFormat currencyFormatter = NumberFormat.getCurrencyInstance();
    System.out.println("Your gross pay is " + currencyFormatter.format(grossPay));
    }
}

Antwoord 13

Je kunt het als volgt doen:

double d = 4.0;
DecimalFormat df = new DecimalFormat("#.##");
System.out.print(df.format(d));

Antwoord 14

Ik weet dat dit een oud onderwerp is, maar als je echt de punt wilt hebben in plaats van de komma, sla dan je resultaat op als X,00 in een String en verander het dan gewoon voor een punt zodat je de X.00

De eenvoudigste manier is om gewoon vervangen te gebruiken.

String var = "X,00";
String newVar = var.replace(",",".");

De output zal de X.00 zijn die je wilde. Om het u gemakkelijk te maken, kunt u het ook allemaal tegelijk doen en opslaan in een dubbele variabele:

Double var = Double.parseDouble(("X,00").replace(",",".");

Ik weet dat dit antwoord op dit moment niet nuttig is, maar misschien is iemand die dit forum bezoekt op zoek naar een snelle oplossing als deze.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

five × 4 =

Other episodes