String a = "31.4530";
Float.parseFloat(a);
System.out.println(a);
a的值为31.453后面的0不见了,请教下这种情况该怎么处理下

解决方案 »

  1.   

    是打印 Float.parseFloat(a);的值 ,写错了。
      

  2.   

    System.out.printf("%7.4f", Float.parseFloat(a));
      

  3.   

    这是因为float的精度不高,这种情况下,我建议你用String s = "31.4530";
    BigDecimal  b = new BigDecimal(s);
    System.out.println(b);
      

  4.   

    不知lz是用的哪种工具编译的,我用的是MyEclipse
         运行后,结果为:31.4530
        字符串已成功的转换为了浮点型数据类型,
          浮点型数据类型的大小为32位,已足够大了,这个数是能够正常显示的    
      

  5.   

    我用Eclipse 也是输出的31.4530
      

  6.   

    偶打印出来的结果和楼主一样估计是float精度不高的原因
      

  7.   

    补充一下
    用BigDecimal类打印出来的结果就是
    31.4530
      

  8.   

    感觉又是JDK版本惹的祸~~~~
      

  9.   

    但是我打印出来的更是糟糕,
    String a = "31.4530002";Float.parseFloat(a);
    System.out.println(a);
    但是我打印出来的是和楼方一样的31.453
      

  10.   

    我用的MyEclipse做的,答案后面有零的啊~~~
      

  11.   

    String a = "127847.54900";
    Float.parseFloat(a);
    System.out.println(a);
    我这样都打印的结果是:127847.54900
      

  12.   

    println默认调用Object.toString()方法,直接打印不就得了!
      

  13.   

       我怎么是31.4530了
       估计你要用的版本不匹配 把Eclipse换成1.5版本的
        lz 怎么把沙发坐了了~~~~
      

  14.   

    估計是要insert表中,直接輸出的話,沒必要轉換!
      

  15.   


    這哥们的Eclipse是祖上传下来的吧,哈哈哈~~~~
      

  16.   

    楼主的开发环境有关,我在 myeclipse中调试没有一点问题.不过没有白来这里,至少学了点BigDecimal,呵呵
      

  17.   

    我测试过,结果还是发现BigDecimal比较好,可是真的可能是效率差了点。
    开始的时候我觉得用printf可能会简单点,但是我用printf出来的结果竟然是不对的
      

  18.   

    非要用float,用double就行了吧!!
      

  19.   

    我用的是jdk6 输出和lz一样啊 
      

  20.   

    楼上的并不能解决根本问题
    用DecimalFormat 可以对double数据进行格式化
    double d1 = 123.34634;
    DecimalFormat df = new DecimalFormat( "##0.00000" );
    DecimalFormat df1 = new DecimalFormat( "##0.00" );
    String str=df.format( d1 );
    String str1=df1.format( d1 );
    System.out.println(str);
    System.out.println(str1);
    用这种格式化还能进行四舍无入
    不过你首先要
    double d2 = Double.parseDouble("1234.345");