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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 魏亮 中级黑马   /  2012-11-21 15:36  /  2413 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

/*
练习。给定一个小数。
保留该小数的后两位。

选作。可以考虑,保留时进行四舍五入。

*/

//小问题,可我自己不知道怎么下手。。。。大家给个思路

6 个回复

倒序浏览
public class Asd {
public static Double format(double data,int scope){
  //10的位数次方 如保留2位则 tempDouble=100
  double tempDouble=Math.pow(10, scope);//tempDouble=10的scope次方
  //原始数据先乘tempDouble再转成整型,作用是去小数点
  data=data*tempDouble;//让data变成原来的多少倍,现在是需要保留两位小数,所以先让他变大100倍
  int tempInt=(int) data;//再将变大后的数强转成int,为的是去掉变大后的数的小数点后的数
  //返回去小数之后再除tempDouble的结果
  return tempInt/tempDouble;再让得到的int型的数缩小100倍,就是原来的数保留两位小数的结果
}
public static void main(String[] args) {
  System.out.println(format(123.123123123,2));
}
}

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

回复 使用道具 举报
没有四舍五入的效果
回复 使用道具 举报
黑马吕世成 来自手机 中级黑马 2012-11-21 16:46:48
板凳
你可以先加上0.005之后再按上面执行,这样就有四舍五入了。来自: Android客户端
回复 使用道具 举报
你可以定义一个BigDecimal来解决这个问题
如下:
package com.itheima.test;
import java.math.BigDecimal;
public class Test2 {
public static void main(String[] args) {
  double val=23.335;
  BigDecimal bd1 = getBigDecimal(val);//调用方法,把double转化成BigDecimal
  System.out.println(bd1.doubleValue());//然后将BigDecimal转换成我们需要的double
}
    //把double转换成BigDecimal
private static BigDecimal getBigDecimal(double val) {
  BigDecimal bd=new BigDecimal(val);//把double转换成BigDecimal
  /**
   * 返回一个 BigDecimal,保留两位小数
   * ROUND_HALF_UP:是BigDecimal中的一个常量, 向“最接近的”数字舍入,如果与两个相邻数字的距离相等,则为向上舍入的舍入模式
   */
  BigDecimal bd1=bd.setScale(2, BigDecimal.ROUND_HALF_UP);
  return bd1;
}
}

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
多谢楼上。。。
回复 使用道具 举报
魏亮 中级黑马 2012-11-26 07:57:41
7#
坚持远方 发表于 2012-11-21 16:21
public class Asd {
public static Double format(double data,int scope){
  //10的位数次方 如保留2位则 ...

多谢,这个就是我想要的方法
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马