题目简介:给出年利率,贷款总额,年数,能够显示出月支付额,总共还款数;
问题:注意月支额,总支额两行,不明白,为什么括号加的位置不同,月支额应该是小数点后一位,总支额小数点后两位。明明用的(int)型强制转换,求大神解答!!package javajichu;import javax.swing.JOptionPane;
import java.math.*;
public class Computeloan {
public static void main(String[] args) {
String input1=JOptionPane.showInputDialog("请输入年利率:如8.5");
double 年利率=Double.parseDouble(input1);
double 月利率=年利率/1200;
String input2=JOptionPane.showInputDialog("请输入贷款年数:");
double 年数=Double.parseDouble(input2);
String input3=JOptionPane.showInputDialog("请输入贷款总额:");
double 贷款总额=Double.parseDouble(input3);
double 月支额=贷款总额*月利率/(1-1/Math.pow((1+月利率),年数*12));//计算出月支额
double 总支额=月支额*12*年数;
月支额=(int)(月支额*100/100.0);
总支额=(int)(总支额*100)/100.0;
String output="总支额为:"+总支额+"\n月支额为:"+月支额;//string 定义字符串类型
JOptionPane.showMessageDialog(null, output);
}}
基本数据类型
问题:注意月支额,总支额两行,不明白,为什么括号加的位置不同,月支额应该是小数点后一位,总支额小数点后两位。明明用的(int)型强制转换,求大神解答!!package javajichu;import javax.swing.JOptionPane;
import java.math.*;
public class Computeloan {
public static void main(String[] args) {
String input1=JOptionPane.showInputDialog("请输入年利率:如8.5");
double 年利率=Double.parseDouble(input1);
double 月利率=年利率/1200;
String input2=JOptionPane.showInputDialog("请输入贷款年数:");
double 年数=Double.parseDouble(input2);
String input3=JOptionPane.showInputDialog("请输入贷款总额:");
double 贷款总额=Double.parseDouble(input3);
double 月支额=贷款总额*月利率/(1-1/Math.pow((1+月利率),年数*12));//计算出月支额
double 总支额=月支额*12*年数;
月支额=(int)(月支额*100/100.0);
总支额=(int)(总支额*100)/100.0;
String output="总支额为:"+总支额+"\n月支额为:"+月支额;//string 定义字符串类型
JOptionPane.showMessageDialog(null, output);
}}
基本数据类型
解决方案 »
- 做java开发的用什么操作系统
- 字符串处理小问题
- JAVA写文件不成功,谢谢!
- hibernate在配置文件中配置多个<mapping resource/>的问题,请熟悉的知晓一声
- struts里用validation验证表单的问题
- 关于多态和接口
- 在java 里 怎么调用 Linux 下的 终端下的控制台命令 (诸如 ls,ping 等)
- JBUILDER6 在RED HAT LINUX8。0无法输入中文,为什么?
- jb6:在与SQL SEVER进行数据处理过程中,遇到的问题
- 为什么我上传文件的时候,如果遇到文件名是中文的,虽然可以上传,但不可以下载,怎么解决?
- jdbc-odbc桥连接数据出现异常如何解决?
- 月薪.......
总支额=(int)(总支额*100)/100.0;
这个是吧第一个
等于把最后的结果(月支额*100/100.0)给转换成了int型。。而第二个,
等于吧(总支额*100)这个转换成了int类型,然后除以100.0这个double类型所以,你明白了吧?
import javax.swing.JOptionPane;public class ComputeLoan { /** Main method */ public static void main(String[] args) { // Enter yearly interest rate
String annualInterestRateString = JOptionPane.showInputDialog( "Enter yearly interest rate, for example 8.25:"); // Convert string to double
double annualInterestRate = Double.parseDouble(annualInterestRateString); // Obtain monthly interest rate
double monthlyInterestRate = annualInterestRate / 1200; // Enter number of years
String numberOfYearsString = JOptionPane.showInputDialog( "Enter number of years as an integer, \nfor example 5:"); // Convert string to int
int numberOfYears = Integer.parseInt(numberOfYearsString); // Enter loan amount
String loanString = JOptionPane.showInputDialog( "Enter loan amount, for example 120000.95:"); // Convert string to double
double loanAmount = Double.parseDouble(loanString); // Calculate payment
double monthlyPayment = loanAmount * monthlyInterestRate / (1 - 1 / Math.pow(1 + monthlyInterestRate, numberOfYears * 12)); double totalPayment = monthlyPayment * numberOfYears * 12; // Format to keep two digits after the decimal point
monthlyPayment = (int)(monthlyPayment * 100) / 100.0; totalPayment = (int)(totalPayment * 100) / 100.0; // Display results
String output = "The monthly payment is " + monthlyPayment + "\nThe total payment is " + totalPayment; JOptionPane.showMessageDialog(null, output); }
monthlyPayment=(int)(monthlyPayment*100)/100.0;
totalPayment=(int)(totalPayment*100)/100/0;
)
我自己将括号稍微改动了下……
monthlyPayment=(int)(monthlyPayment*100)/100.0;
totalPayment=(int)(totalPayment*100)/100/0;
)
我自己将括号稍微改动了下……
好吧,我想多了 = =
既然月支付已经强制转换为int型,为什么输出时,小数点后还有一位?(就是这一点不清楚……)那是因为你定义的时候,
定义 月支付 为double型的,
所以即使你强转为了int型,
由于你定义的为double型,所以最后也会转化为double型。你可以输出一下
mouth=(int)(100.0*100/99.5);
(100.0*100/99.5);应该返回的是一个100.5....
但是最后输出mouth的你会发现只输出了一个100,所以证明确实被int转型过的。
一开始a,b,c
后面慢慢就可以英文单词了。。