我在String中有数字,如:
"34.556231"
"43.385644"
"65.659388"
点后六位小数。
我想将它们解析为Float或最终解析为Double。
如何将这些字符串转换为Float或Double?
当我使用Float.parseFloat("5.586905")
时,浮点值等于5.58691
,所以看起来它只解析为5位小数并对其进行舍入。
如何解决?
答案 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()
就足够了