Java 使用Math.pow()函数时出现的问题
我使用上面的代码计算EMI,但它显示0值。我使用int和double,但它仍然为int提供0,为double提供0.0,因为您正在将转换结果键入整数,可能它有一个类似于0.55的分数部分,并且由于类型转换,它删除了分数部分,只给出0。尝试将付款变量更改为double,同时确保Java 使用Math.pow()函数时出现的问题,java,android,math,Java,Android,Math,我使用上面的代码计算EMI,但它显示0值。我使用int和double,但它仍然为int提供0,为double提供0.0,因为您正在将转换结果键入整数,可能它有一个类似于0.55的分数部分,并且由于类型转换,它删除了分数部分,只给出0。尝试将付款变量更改为double,同时确保doubleloanamount不等于0。将intRate设置为float。。。。而如果intRate本身为0,则计算intRate*X的付款将得到0。您已经编写了intRate=x*11/100,如果小于1,则为0 同时使
doubleloanamount
不等于0。将intRate设置为float。。。。而如果intRate本身为0,则计算intRate*X的付款将得到0。您已经编写了intRate=x*11/100,如果小于1,则为0
同时使mnthRate浮动doubleloanamount是否等于零?该问题可能与您正在执行的double/int cast有关,也可能与double Loanamount Values有关,我怀疑
数学。除非您每月有超过50%的利息,这是非常高的,否则四舍五入(monthlyrate)
为0。我建议你用调试器一步一步地检查你的代码,看看每一行代码都做了什么,以及你得到的结果。我删除了Math.round()函数,但它仍然显示0结果查看我编辑的部分我用double代替int,它仍然给我0.0的输出
String loanamount = edtamount.getText().toString();
double doubleloanamount = Double.parseDouble(loanamount);
String strloanamount = Double.toString(doubleloanamount);
Log.v("doubleloanamout", strloanamount);
String years = edtyears.getText().toString();
double doubleyears = Double.parseDouble(years) * 12;
String strpaymentdoubleyears = Double.toString(doubleyears);
Log.v("doubleyears", strpaymentdoubleyears);
double inrate = doubleloanamount * 11 / 100;
double monthlyrate = inrate / 12;
double roundmonthlyrate = Math.round(monthlyrate);
String inratefordemo = Double.toString(roundmonthlyrate);
double Payment = (doubleloanamount
* Math.pow(( roundmonthlyrate) + 1, (doubleyears)) * roundmonthlyrate)
/ (Math.pow( roundmonthlyrate + 1, (doubleyears)) - 1);
double roundpayment = Math.round(Payment);
String strpayment = Double.toString(roundpayment);
Log.v("payment", strpayment);
edtemimonth.setText(strpayment);