任务是制作一个抵押贷款计算器,使用for循环和二进制搜索来计算支付贷款所需的付款。这是我的答案:
r=input('please input your interest rate value:');
Xmin=0;
Xmax=5000;
d(1)=50000;
d(300)=20;
while (d(300)<-0.001||d(300)>0.001)
Xmid=0.5*(Xmin+Xmax);
for m=2:300
d(m)=((1+r/100)^(1/12))*d(m-1)-Xmid;
end
if(d(300)>0)
Xmin=Xmid;
end
if (d(300)<0)
Xmax=Xmid;
end
end
fprintf('monthly payment value %d / n',Xmid)
%r
%Xmax
%Xmin
%Xmid
然而,我的回答显示,例如"每月付款价值3.470040e+02/n>>mortage_repayment"
我怎样才能摆脱e+02,还有什么可以改进或整理我的代码吗?非常感谢。
问题是您试图写入一个非整数Xmid
,但您指定该数字是一个带有%d
的整数。
你有两个选择:
A) 如果您对数字的小数部分不感兴趣,请将fprintf
行替换为fprintf('monthly payment value %d n',round(Xmid))
。添加round
函数会将您的值四舍五入到最接近的整数。(也可以使用ceil
或floor
分别向上或向下取整)。
B) 如果您对小数部分感兴趣,请将fprintf
行替换为fprintf('monthly payment value %.2f n',Xmid)
。将d
更改为.2f
意味着将不写入整数,而是写入点后最多两位的十进制数。