如何摆脱e+02以及如何改进我的代码Matlab



任务是制作一个抵押贷款计算器,使用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函数会将您的值四舍五入到最接近的整数。(也可以使用ceilfloor分别向上或向下取整)。

B) 如果您对小数部分感兴趣,请将fprintf行替换为fprintf('monthly payment value %.2f n',Xmid)。将d更改为.2f意味着将不写入整数,而是写入点后最多两位的十进制数。

最新更新