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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wedge 中级黑马   /  2013-7-15 10:25  /  2064 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 巩建 于 2013-7-15 17:17 编辑

给定一个小数,怎样获取最后两位,请大家帮我理一下简单的思路。

评分

参与人数 1黑马币 +3 收起 理由
杨兴庭 + 3 赞一个!

查看全部评分

9 个回复

正序浏览
不多说,直接上代码,你运行下,
每行代码都有注释的,很好理解的

  1. public class theLastTwo {
  2.         public static void main(String[] args){
  3.                 float f =  (float) 1.23456;
  4.                
  5.                 int inNum = (int) (f*100);//将f乘以100并变为整数,则f只有后两位保留了,其余小数位都自动舍去
  6.                 float ff = inNum;//将inNum赋值给ff,
  7.                 f =ff/100;//ff除以100,得到的仍为float类型的,所以其后两位小数点保留。再将其赋值给f
  8.                 System.out.println("f= " + f);//得到f的小数点后两位
  9.                
  10.         }

  11. }
复制代码
回复 使用道具 举报
白_蓝(八公) 发表于 2013-7-15 11:54
编译报错:Cannot invoke toString() on the primitive type double

我试了不会报错。你可以再试试或者发上来你的代码看看
回复 使用道具 举报
  1. public static void main(String[] args) {
  2.                 double d = 8.31654131654;
  3.                
  4.                 double i = (int)(d*100); //让double类型的小数d转成int类型  这样就会丢失精度  再进行一次转换就可以了
  5.                
  6.                
  7.                 System.out.println(i/100);
  8.         }
复制代码

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
王靖远 发表于 2013-7-15 10:49
Double d = 12.41412;
                System.out.println(d.toString().substring(d.toString().length()-2, d.toString ...

编译报错:Cannot invoke toString() on the primitive type double
回复 使用道具 举报
本帖最后由 majunm 于 2013-7-15 12:02 编辑
wll_sx1990 发表于 2013-7-15 11:29
例如1.123456,想获取56,


String str=1.123456+"";//变成字符串
System,out。print(str。charAt(str。length()-2));//获取的是 5
System,out。print(str。charAt(str。length()-1));

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
乘以100提升为int类型 在除以100
回复 使用道具 举报
本帖最后由 wll_sx1990 于 2013-7-15 12:02 编辑

例如1.123456,想获取56,

  1. <P>str = String.valueOf(number);
  2. String value =  substring(str.length()-2);
  3. Double result = 0.0;
  4. if(value.contains('.'){
  5. // 说明小数位上只有一位,则获取整数的最后一位
  6.        String last1 = str.charAt(str.length()-3);
  7.        result = Double.parseDouble(value.subString(1)+last1);
  8. }</P>
  9. <P>
  10. </P>
复制代码
这样就得到了这最后两个数字

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
Double d = 12.41412;
                System.out.println(d.toString().substring(d.toString().length()-2, d.toString().length()));

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
我的想法,没有试过还。转String, substring(str.length-2, str.length). 再转int。不知道可行不

评分

参与人数 1技术分 +1 收起 理由
杨兴庭 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马