I need to format a decimal value to a string where i always display at lease 2 decimals and at most 4.
so for example
"34.49596" would be "34.4959"
"49.3" would be "49.30"
can this be done using the String.format command? Or is there an easier/better way to do this in java.
You want java.text.DecimalFormat.
DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);
Yes you can do it with String.format
:
String result = String.format("%.2f", 10.0 / 3.0);
// result: "3.33"
result = String.format("%.3f", 2.5);
// result: "2.500"
Here is a small code snippet that does the job:
double a = 34.51234;
NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);
System.out.println(df.format(a));
java.text.NumberFormat is probably what you want.
You want java.text.DecimalFormat
NumberFormat and DecimalFormat are definitely what you want. Also, note the NumberFormat.setRoundingMode()
method. You can use it to control how rounding or truncation is applied during formatting.
来源:https://stackoverflow.com/questions/433958/java-decimal-string-format