黑马程序员技术交流社区

标题: 如何保留小数的后两位??? [打印本页]

作者: sugar    时间: 2014-7-16 09:27
标题: 如何保留小数的后两位???
给定一个小数,保留该小数的后两位,都有哪些方式???
作者: zeus00456    时间: 2014-7-16 15:55
我感觉这样可以
1.既然是保留两位,那么先加上0.05,用来实现四舍五入
2.你的数据是浮点的嘛,让你的数据*100
3.将数据强制转换成long类型,来实现截掉小数
4.现在,把你的long变成浮点型然后再/100应该就能解决了吧
作者: ddewym123    时间: 2014-7-16 17:44
  1. import java.math.BigDecimal;
  2. import java.text.DecimalFormat;

  3. public class DoubleTest {

  4.         public static void main(String[] args) {
  5.                 Double d=1.236325;
  6.                 /*乘以100并强制转换为int型,然后再除以100.0
  7.                   截取两位小数,不会四舍五入*/
  8.                 Double d1=(int)(d*100)/100.0;
  9.                 System.out.println(d);
  10.                 System.out.println(d1);
  11.                 //类似上面的,利用Math.round方法
  12.                 Double d2=Math.round(d*100)/100.0;
  13.                 System.out.println(d2);
  14.                 //用DecimalFormat,会四舍五入
  15.                 DecimalFormat df=new DecimalFormat(".00");
  16.                 Double d3=Double.parseDouble(df.format(d));
  17.                 System.out.println(d3);
  18.                 //利用String的format方法
  19.                 String str1=String.format("%.2f",d);
  20.                 Double d4=Double.parseDouble(str1);
  21.                 System.out.println(d4);
  22.                 //利用String的substring方法
  23.                 String str2=d.toString();
  24.                 str2=str2.substring(0,str2.indexOf(".")+3);
  25.                 Double d5=Double.parseDouble(str2);
  26.                 System.out.println(d5);
  27.                 //利用BigDecimal的setScale方法
  28.                 BigDecimal bd=new BigDecimal(d);
  29.                 double d6=bd.setScale(2, BigDecimal.ROUND_HALF_UP).doubleValue();
  30.                 System.out.println(d6);
  31.         }

  32. }
复制代码



作者: sugar    时间: 2014-7-16 18:47
ddewym123 发表于 2014-7-16 17:44

感觉很详细,太牛了
作者: 郭可    时间: 2014-7-16 23:37
方法很多 我只来混点经验




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2