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