我需要爲十進制值格式化爲一個字符串,其中i總是顯示在租賃2位小數和至多4java的小數字符串格式
所以例如
"34.49596" would be "34.4959"
"49.3" would be "49.30"
可以在此使用來完成String.format命令?或者有沒有更容易/更好的方式來在java中做到這一點。
我需要爲十進制值格式化爲一個字符串,其中i總是顯示在租賃2位小數和至多4java的小數字符串格式
所以例如
"34.49596" would be "34.4959"
"49.3" would be "49.30"
可以在此使用來完成String.format命令?或者有沒有更容易/更好的方式來在java中做到這一點。
你想要java.text.DecimalFormat。
DecimalFormat df = new DecimalFormat("0.00##");
String result = df.format(34.4959);
你想java.text.DecimalFormat
java.text.NumberFormat可能是你想要的。
這裏是一個小的代碼片段,沒有工作:
double a = 34.51234;
NumberFormat df = DecimalFormat.getInstance();
df.setMinimumFractionDigits(2);
df.setMaximumFractionDigits(4);
df.setRoundingMode(RoundingMode.DOWN);
System.out.println(df.format(a));
沒有負面影響,但您的代碼在原始海報給出的第一個示例中失敗。需要使用RoundingMode.DOWN,否則它默認使用HALF_EVEN,我想。 – 2009-01-12 03:41:58
感謝您的糾正Adeel – 2009-01-13 08:52:23
的NumberFormat和DecimalFormat的肯定是你想要什麼。另外,請注意NumberFormat.setRoundingMode()
方法。您可以使用它來控制在格式化過程中應用舍入或截斷的方式。
是的,你可以用String.format
做到這一點:
String result = String.format("%.2f", 10.0/3.0);
// result: "3.33"
result = String.format("%.3f", 2.5);
// result: "2.500"
按照相同的例子,你會得到錯誤的結果。你需要爲這個特定的例子使用RoundingMode.DOWN。否則,它使用HALF_EVEN。不,否則。 – 2009-01-12 03:40:04