今天去面試了,需要上機做題。題目的內容是計算一個貨物訂單的稅費和總價格(包括稅費),結果需要精確到兩個小數,同時按照如下規則進行處理:
3.01 ——>3.05,
2.48——>2.50,
2.14——>2.15。
上機的時候不能上網,沒有API,但是你可以查源碼。這個題目有三個用例測試,而且你的運行結果必須和答案完全相等,你才能獲得success。
當我做到對數據格式化的時候,我卡住了。我只記得NumberFormat類,但是不知在哪個包里,簡直就是悲劇啊!
回來上網查了一篇文章,寫的還可以。我就黏貼過來啦。
import java.text.DecimalFormat;
public class DoubleFormate {
public static void main(String[] args) {
java.text.DecimalFormat df=new java.text.DecimalFormat("0.00");//保留2位小數
double d1=123456789.123456;
double d2=987654321.987654321;
System.out.println("format1_d1="+df.format(d1));//輸出format1_d1=123456789.12
System.out.println("format1_d2="+df.format(d2));//format1_d2=987654321.99 四舍五入
DecimalFormat dff = new DecimalFormat("#,##0.00");
System.out.println("format2_d1="+dff.format(d1));//輸出:format2_d1=123,456,789.12
System.out.println("format2_d2="+dff.format(d2));//輸出:format2_d2=987,654,321.99 四舍五入
}
}
主要使用的類:java.text.DecimalFormat
1。實例化對象,可以用如下兩種方法:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
因為DecimalFormat繼承自NumberFormat。
2。設定小數位數
系統默認小數位數為3,如:
DecimalFormat df=(DecimalFormat)NumberFormat.getInstance();
System.out.println(df.format(12.3456789));
輸出:12.346
現在可以通過如下方法把小數為設為兩位:
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789));
則輸出為:12.35
3。將數字轉化為百分比輸出,有如下兩種方法:
(1)
df.applyPattern("##.##%");
System.out.println(df.format(12.3456789));
System.out.println(df.format(1));
System.out.println(df.format(0.015));
輸出分別為:1234.57% 100% 1.5%
(2)
df.setMaximumFractionDigits(2);
System.out.println(df.format(12.3456789*100)+"%");
System.out.println(df.format(1*100)+"%");
System.out.println(df.format(0.015*100)+"%");
輸出分別為:
1,234.57% 100% 1.5%
4。設置分組大小
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
System.out.println(df1.format(123456789));
輸出:1,23,45,67,89
還可以通過df1.setGroupingUsed(false);來禁用分組設置,如:
DecimalFormat df1=(DecimalFormat) DecimalFormat.getInstance();
df1.setGroupingSize(2);
df1.setGroupingUsed(false);
System.out.println(df1.format(123456789));
輸出:123456789
5。設置小數為必須為2位
DecimalFormat df2=(DecimalFormat) DecimalFormat.getInstance();
df2.applyPattern("0.00");
System.out.println(df2.format(1.2))