Java String parseFloat还是x.xxxxxx数字的double?

时间:2015-03-14 19:06:17

标签: java string parsing floating-point type-conversion

我在String中有数字,如:

"34.556231"
"43.385644"
"65.659388"

点后六位小数。

我想将它们解析为Float或最终解析为Double。

如何将这些字符串转换为Float或Double?

当我使用Float.parseFloat("5.586905")时,浮点值等于5.58691,所以看起来它只解析为5位小数并对其进行舍入。

如何解决?

2 个答案:

答案 0 :(得分:1)

float没有足够的精确度来存储您提供的数字。请改用double

正如java规范所说,

  

与byte和short的建议一样,使用float(而不是   of double)如果需要在大型浮动数组中保存内存   点数

换句话说,除非存储是主要问题,否则请勿使用float。它不如double精确得多,并且会导致像您刚才概述的那样荒谬的结果。

使用Double.parseDouble

答案 1 :(得分:0)

如果您在十进制之后有更多数字,那么您可以像这样使用bigdecimal

String x="5.586905";
    BigDecimal b=new BigDecimal(x);
            double value=b.doubleValue()            ;
    System.out.println(value);

但根据您的指定号码Double.parseDouble()就足够了