先说在作业中用到的
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开发的时候再深入。