先说在作业中用到的
DecimalFormat df = new DecimalFormat("0.00");
String doubleNumAsString = df.format(doubleNum);
然后再用Double.valueOf()转过来。
DecimalFormat这个类深究起来也是很深,所以暂且知道怎么用吧。
这里就借别人的测试和结论了:
import java.text.DecimalFormat;
public class DecimalFormatTest
{
public static void main(String[]args){
DecimalFormat df1,df2;
System.out.println("整数部分0/#的区别");
df1 = new DecimalFormat("#.00");
df2 = new DecimalFormat("0.00");
System.out.println(df1.format(0.1)); // .10
System.out.println(df2.format(0.1)); // 0.10
System.out.println("小数部分0/#的区别");
df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("0.##");
System.out.println(df1.format(0.1)); // 0.10
System.out.println(df2.format(0.1)); // 0.1
System.out.println(df1.format(0.006)); // 0.01
System.out.println(df2.format(0.006)); // 0.01
System.out.println("3、整数部分有多位");
df1 = new DecimalFormat("0.00");
df2 = new DecimalFormat("#.00");
System.out.println(df1.format(2)); // 2.00
System.out.println(df2.format(2)); // 2.00
System.out.println(df1.format(20)); // 20.00
System.out.println(df2.format(20)); // 20.00
System.out.println(df1.format(200)); // 200.00
System.out.println(df2.format(200)); // 200.00
}
}
简单来说,构造的时候0是占位符,#表示如果这位数字不存在就不显示,它代表最大位数。所以对于小数如果用#.00,那个位就不会显示。对于小数部分都满足四舍五入
第二种比较常见的四舍五入方法是Math.round()
Math.round(int i)的取整是i加上0.5后向下取整,比如Math.round(-2.5)就是-2,Math.round(3.5)是4。如何用来保留小数点后几位呢?Math.round(doubleNum * 100) / 100 就保留了小数点后2位,当然由于本身不是完全意义上的四舍五入,比如-2.5不保留,那直接会返回-2,不成立。
第三种是利用Stirng.format("%.2f",doubleNum)保留2位小数,它是可以做到四舍五入的,也可以改其他格式。返回值是String。
这个方法最大的好处可以对多个值同时格式处理,然后返回一个字符串。直接放一个链接在之后web开发的时候再深入。