本帖最后由 陈中岩 于 2013-4-16 12:26 编辑
我的问题是保留一个小数的后两位,而不是小数点的后两位。我早上1点就起床思索这个问题,就是不知道怎么办。
我也有过想法
- //思想:先获取这个数的整数位,然后这个数减去整数位,得到的是0.xxxxxxx
- //1,转换成字符串,然后反转就是xxxxxxx.0,取出前两位
- //2,取出后再反转
- //乘以0.1的这个数组长度-2次幂
- //得出的数即可
- class MathTest2
- {
- public static void main(String[] args)
- {
- LastTwo(3.12345);
- }
- public static void LastTwo(double d)
- {
-
- //取得这个数的整数位i
- double i = Math.floor(d);
- //转换成整型
- sop("测试i="+i);
- int l = (int)Math.round(i);
-
- sop("测试l="+l);
- //取得这个整数的小数部分xs
- double xs = (d-l);
-
- sop("测试xs="+xs);
- //转换成字符串
- //String s = new Double(xs).toString();
- //char[] chs = s.toCharArray();
- //TreeSet<String> ts = new TreeSet<String>(Collections.reverseOrder(s));
-
- }
-
- public static void sop(Object obj)
- {
- System.out.println(obj);
- }
- }
-
复制代码 但是:测试i=3.0
测试l=3
测试xs=0.12345000000000006
为啥xs是0.12345000000000006???
求高人指点一二。
再明确一下我想要的:比如输入3.12345得出的结果是0.00045 |