读书人

1.23 变为1.3 1.223变成1.23 是无规律

发布时间: 2011-12-26 23:09:59 作者: rapoo

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了

读书人网 >J2SE开发

热点推荐