黑马程序员技术交流社区

标题: 怎么获取一个小数的后两位 [打印本页]

作者: wedge    时间: 2013-7-15 10:25
标题: 怎么获取一个小数的后两位
本帖最后由 巩建 于 2013-7-15 17:17 编辑

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

作者: 草貌路飞    时间: 2013-7-15 10:48
我的想法,没有试过还。转String, substring(str.length-2, str.length). 再转int。不知道可行不
作者: 王靖远    时间: 2013-7-15 10:49
Double d = 12.41412;
                System.out.println(d.toString().substring(d.toString().length()-2, d.toString().length()));
作者: wll_sx1990    时间: 2013-7-15 11:29
本帖最后由 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>
复制代码
这样就得到了这最后两个数字
作者: xingwang    时间: 2013-7-15 11:31
乘以100提升为int类型 在除以100
作者: majunm    时间: 2013-7-15 11:36
本帖最后由 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));
作者: 白_蓝(八公)    时间: 2013-7-15 11:54
王靖远 发表于 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
作者: 白_蓝(八公)    时间: 2013-7-15 11:55
  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.         }
复制代码

作者: 王靖远    时间: 2013-7-15 12:06
白_蓝(八公) 发表于 2013-7-15 11:54
编译报错:Cannot invoke toString() on the primitive type double

我试了不会报错。你可以再试试或者发上来你的代码看看
作者: sunalong    时间: 2013-7-15 17:16
不多说,直接上代码,你运行下,
每行代码都有注释的,很好理解的

  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. }
复制代码





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