[java] string类型转为double

2024-11-20 08:47:02
推荐回答(5个)
回答(1):

精度的问题!用基本类型的double类型进行运算可能会丢失精度。而且特别大的数又没法处理。所以如果用BigDecimal这个类问题就解决了。这个类在java.Math包下。它可以处理任意精度的数据。对于楼主出现的问题,我从新写了段代码,供楼主参考。但是主要是还得查看API!代码如下:

import java.math.*;

public class oopp

{

 public static void main(String[] args)

 {

  String a="1467000000";

  double aa=Double.parseDouble(a);

  BigDecimal beichushu=new BigDecimal(aa);

  BigDecimal chushu=new BigDecimal(100000000);

  BigDecimal result=beichushu.divide(chushu,new MathContext(4));//MathConText(4)表示结果精确4位!

  boolean isTrue=String.valueOf(result).equals("14.67");

  System.out.println("1467000000除以100000000="+result);

  System.out.println(result+"与14.67比较的结果是"+isTrue);

 }

}

回答(2):

如果差值的绝对值小于某个足够小的数(比如0.000001等),就认为相等

回答(3):

如果差值的绝对值小于某个足够小的数(比如0.000001等),就认为相等

另外就是将你的14.67*100000000再比较,放大而后再比较。

回答(4):

你可以定义一个
eps 大小为1e-8
当Math.abs(a-b)定义a,b为相等,这个是浮点数相等的解决办法。

回答(5):

"14.67".equals("( Math.round(14.669999999999998*100)/100)")