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 voorfloating
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));
Antwoord 9
U kunt een van de onderstaande methoden gebruiken
-
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));
-
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.