当我尝试将字符串“ 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
答案 0 :(得分:3)
距离Float
最近的95941634.164
是95941632
。
Java正在使用科学符号来输出该值。
鉴于与您的电话号码最接近的Double
是95941634.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);