Java Bigdecimal类

时间:2012-02-10 02:38:16

标签: java bigdecimal

这是一项家庭作业,我正在尝试编制兴趣计算器。我需要使用BigDecimal类,但无法弄清楚如何以货币或百分比输出。我不确定要问什么问题,但我将发布两个代码BigDecimal类代码,另一个代码以我需要的方式显示输出但不使用BigDecimal。任何建议表示赞赏。

   import java.util.Scanner;

   import java.math.*;

   public class project3a 
   {


         public static void main(String[] args)
         {   
            System.out.println("Welcome to the interest calculator");   
            System.out.println();


            // create a scanner object and start while loop             
            Scanner sc = new Scanner(System.in);
            String choice ="y";
            while (choice.equalsIgnoreCase("y"))
           {

             //Get input from user
             System.out.print("Enter Loan amount: ");
             double Loanamount = sc.nextDouble();

             System.out.print("Enter Interest Rate: ");
             double interestrate = sc.nextDouble();

             //calculate results    
             double Interest = Loanamount * interestrate;

            //format 
            BigDecimal decimalLoanamount = new BigDecimal(Double.toString (Loanamount));
            decimalLoanamount = decimalLoanamount.setScale(2, RoundingMode.HALF_UP);
            BigDecimal decimalinterestrate = new BigDecimal(Double.toString(interestrate));
            BigDecimal decimalInterest = new BigDecimal (Double.toString(Interest));
            decimalInterest = decimalInterest.setScale(2,RoundingMode.HALF_UP);

            //Display results
            System.out.println("Loan amount: " + decimalLoanamount);
            System.out.println("Interest rate: " + decimalinterestrate);
            System.out.println("Interest:" + decimalInterest);  
            System.out.println();

            //see if user wants to continue             
            System.out.print("Continue? (y/n): ");
            choice = sc.next();
            System.out.println();


         }

    }

    }

    import java.util.Scanner;
    import java.text.NumberFormat;
    import java.math.*;

    public class project3a 
    {


    public static void main(String[] args)
    {   
        System.out.println("Welcome to the interest calculator");   
        System.out.println();


        // create a scanner object and start while loop             
        Scanner sc = new Scanner(System.in);
        String choice ="y";
        while (choice.equalsIgnoreCase("y"))
        {

            //Get input from user
            System.out.print("Enter Loan amount: ");
            double Loanamount = sc.nextDouble();

            System.out.print("Enter Interest Rate: ");
            double interestrate = sc.nextDouble();

            //calculate results 
            double Interest = Loanamount * interestrate;

            //format and display results
            NumberFormat currency = NumberFormat.getCurrencyInstance();
            NumberFormat percent = NumberFormat.getPercentInstance();
            String message =
                "Loan amount:   " + currency.format (Loanamount) + "\n"
              + "Interest rate: " + percent.format (interestrate)+ "\n"
              + "Interest:      " + currency.format (Interest) + "\n";

            System.out.println(message);

            //see if user wants to continue             
            System.out.print("Continue? (y/n): ");
            choice = sc.next();
            System.out.println();


         }

    }

    }

1 个答案:

答案 0 :(得分:0)

BigDecimal使用您可以在doubleValue()中使用的方法NumberFormat

BigDecimal bd = new BigDecimal("15.25");
NumberFormat currency = NumberFormat.getCurrencyInstance();
NumberFormat percent = NumberFormat.getPercentInstance();

System.out.println( currency.format( bd.doubleValue() ) ); //In Brazil outputs R$ 15,25
System.out.println( percent.format( bd.doubleValue() ) ); // 1.525%