Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Bigdecimal类_Java_Bigdecimal - Fatal编程技术网

Java Bigdecimal类

Java Bigdecimal类,java,bigdecimal,Java,Bigdecimal,这是一个家庭作业,我正在编写一个兴趣计算器。我被要求使用BigDecimal类,但无法确定如何以货币或百分比进行输出。我不确定要问什么问题,但我将发布两个代码BigDecimal类代码和另一个以我需要的方式显示输出但不使用BigDecimal的代码。如有任何建议,我们将不胜感激 import java.util.Scanner; import java.math.*; public class project3a { public static

这是一个家庭作业,我正在编写一个兴趣计算器。我被要求使用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();


         }

    }

    }
BigDecimal具有可以在NumberFormat中使用的doubleValue方法


代码越少,问题就越好,答案也越快越好。我只是想表明我在努力,而不仅仅是在寻找答案,因为这是家庭作业。你能更具体地说明你期望的结果和你得到的结果吗?currency.format和percent.format是你的问题吗?@bradweight,这很好但是,添加家庭作业标签并解释你所做的事情,并且通常尽可能具体,才是真正的方法。当我使用currecy.format和percent.format时,我需要的正是这种格式。但后来我意识到我需要在代码中使用BigDecimal类,现在我不知道如何以currecy.format或percent.format显示。如果要使用非浮点表示来避免浮点错误,不应该在最后通过转换为double来重新引入浮点表示错误。因此,您不能依赖NumericFormat来生成非常大的数字(大约13位或更多位)的精确结果。对于将BigDecimal转换为NumberFormat的两倍,我没有同样的警告。我非常感谢所有的输入。我能让它工作。多谢各位much@BradWhite如果塞吉奥的回答帮助你回答了你的问题,你应该点击答案下面的勾号,表示你的问题已经被这个答案解决了。
    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();


         }

    }

    }
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%