A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© sugar 中级黑马   /  2014-7-16 09:27  /  1293 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

给定一个小数,保留该小数的后两位,都有哪些方式???

4 个回复

正序浏览
方法很多 我只来混点经验
回复 使用道具 举报

感觉很详细,太牛了
回复 使用道具 举报
  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. }
复制代码


回复 使用道具 举报
我感觉这样可以
1.既然是保留两位,那么先加上0.05,用来实现四舍五入
2.你的数据是浮点的嘛,让你的数据*100
3.将数据强制转换成long类型,来实现截掉小数
4.现在,把你的long变成浮点型然后再/100应该就能解决了吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马