日期:2014-05-20  浏览次数:20643 次

1.23 变成1.3 1.223变成1.23 是无规律的。也就是说后面的如果不是0就要往前面进一位。
1.23   变成1.3   1.223变成1.23   是无规律的。也就是说后面的如果不是0就要往前面进一位。

谢谢各位了。Math.ceil()这个是取整的好像。不是我要的。

------解决方案--------------------
这个有点困难,因为浮点数本身就不精确的,很难确定小数点后面有几位有效数。


public static void main(String[] arg) {
  double d = 1.22354564;
  int k = 1;
  double tmp = d * k;
  while(tmp % 1 != 0) {      
    k *= 10;
    tmp = d * k;      
  }
  k /= 10;
  tmp = Math.ceil(d * k) / k;    
  System.out.println(tmp);
}
------解决方案--------------------
1.23 的机器表示可能是 1.229999999999999982236431605997495353221893310546875, 这样你要什么结果呢?
------解决方案--------------------
传成字符串,取出小数位数,然后处理就ok了