import java.text.*;
public class TY 
{
public static void main(String[] args) 
{
double per=3.9898;
DecimalFormat df=new DecimalFormat("##.00");
double pp=per/4;
System.out.println(pp);
System.out.println(pp*100);
System.out.println(df.format(per*100/4)+"%");
}
}

解决方案 »

  1.   

    应该是浮点型的精度问题。
    如果想得到准确的精度,使用BigDecimal类。
      

  2.   

    是浮点型的精度问题import java.text.*;
    public class TY 
    {
    public static void main(String[] args) 
    {
    float per=3.9898f;
    DecimalFormat df=new DecimalFormat("##.00");
    float pp=per/4;
    System.out.println(pp);
    System.out.println(pp*100);
    System.out.println(df.format(per*100/4)+"%");
    }
    }
      

  3.   

    应该是与计算器有关吧.
    虽然是Double,在计算机里的计算器存储了64位长的数据.具体的算法可以去看看操作系统.
    不过这个问题不影响编程的精度吧.
      

  4.   

    action_520_12(小马哥) ( ) 信誉:100  2007-08-14 16:07:29  得分: 0  
     
     
       应该是浮点型的精度问题。
    如果想得到准确的精度,使用BigDecimal类。
      
    同意!
      

  5.   

    还是不明白用BigDecimal类要怎么写程序的
    能否举个例子
      

  6.   

    一样的 直接调用BigDecimal的构造方法
      

  7.   

    我有看api啊,就是看了这还是不明白才要大家举个例子的
      

  8.   

    // 一般采用字符串进行构造
    BigDecimal big1 = new BigDecimal("3.9898");
    BigDecimal result = big1.divide(new BigDecimal("4"));
    System.out.println(result.toString());
    result = result.multiply(new BigDecimal("100"));
    System.out.printf("%.2f%%%n", result);