如何将字符串(“ 95941634.164”)转换为浮点数

时间:2019-06-11 10:26:39

标签: java

当我尝试将字符串“ 95941634.164”转换为浮点数并打印时,它的打印方式为9.5941632E7,而不是95941634.164。

我尝试了以下转换方法Float.parseFloat()和Float.valueOf()

public static void main(String args[])
{
    String s = "95941634.164" ;
    Float f  = Float.valueOf(s);
    System.out.println(f);
    System.out.println(Float.parseFloat("95941634.164"));
}

实际值:9.5941632E7预期为95941634.164

3 个答案:

答案 0 :(得分:3)

距离Float最近的95941634.16495941632

Java正在使用科学符号来输出该值。

鉴于与您的电话号码最接近的Double95941634.1640000045299530029296875,如果使用Double,则输出可能更容易处理。但是,如果要精确的十进制结果,则使用十进制类型:例如BigDecimal

答案 1 :(得分:1)

您可以尝试将String.format转换为两倍。这是一个示例:

public static void main(String args[])
{
    String s = "95941634.164" ;
    Float f= Float.parseFloat(s);
    Double d  = Double.parseDouble(s);
    System.out.println(String.format("%.3f", f));
    System.out.println(String.format("%.3f", d));
}

使用float时,格式会四舍五入,但不能使用double格式。 这是输出:

95941632.000                                                                                                                            
95941634.164 

答案 2 :(得分:-1)

您可以将printf()与%f一起使用:

System.out.printf("value: %f\n", f);