public class FloatAdd
{
public static void main(String[] args)
{
String s = "3.14";
float f1 = 2.5f;
float f2 = Float.parseFloat(s);
System.out.println(f1);
System.out.println(f2);
System.out.println(f1+f2);
}
}输出结果是:
2.5
3.14
5.6400003    为什么不是5.64呢?

解决方案 »

  1.   

    因为float类型的有效位,为小数点后7位如:
    float a=5.0;这样写会出错,因为float型变量强制后面用f结尾,
    所以像你写的
    float f1 = 2.5f;
    要是没有f结尾就必须把有效位显示出来
      

  2.   

    如果要输出的话是用System.out.printf()可以指定输出的尾数和格式,方法和C语言的printf基本一样.
      

  3.   


    是要写入到另外一个文件当中,比如说用BufferedWriter写入到硬盘上的一个.xls表格里。所以还请指条明路呵呵
    最好是先把这个5.64结果完全准备好,比如赋值给f3,最后一次性把这些数据写入到.xls表格里。
      

  4.   


    是要写入到另外一个文件当中,比如说用BufferedWriter写入到硬盘上的一个.xls表格里。所以还请指条明路呵呵
    最好是先把这个5.64结果完全准备好,比如赋值给f3,最后一次性把这些数据写入到.xls表格里。
      

  5.   

    这种精确计算的可能用BigDecimal比较好.
    java.math.BigDecimal
      

  6.   


    搞定了,是不是这样?
    import java.math.BigDecimal;  public class FloatAdd
    {
    public static void main(String[] args)
    {
    String s = "3.14";
    float f1 = 2.5f, f2, f3;
    f2 = Float.parseFloat(s);
    BigDecimal bd = new BigDecimal(f1+f2); 
    f3 = bd.setScale(2,BigDecimal.ROUND_HALF_UP).floatValue();    
    System.out.println(f1);
    System.out.println(f2);
    System.out.println(f3);
    }
    }
    结果是:
    2.5 
    3.14 
    5.64
      

  7.   

    [Quote=引用楼主 dzh523 的帖子:]
    public class FloatAdd 

    public static void main(String[] args) 

    String s = "3.14"; 
    float f1 = 2.5f; 
    float f2 = Float.parseFloat(s); 

    Float.parseFloat返回值好像是Double类型吧