任务是制作抵押贷款计算器,以使用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&gt;&gt; mortage_repayment”
如何摆脱e + 02,无论如何都要改进或消除我的代码?谢谢!
答案 0 :(得分:0)
问题是您正在尝试编写非整数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
意味着不是写整数,而是写入点后最多两位数的十进制数。