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

时间:2016-01-03 17:18:43

标签: 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&gt;&gt; mortage_repayment”

如何摆脱e + 02,无论如何都要改进或消除我的代码?谢谢!

1 个答案:

答案 0 :(得分:0)

问题是您正在尝试编写非整数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意味着不是写整数,而是写入点后最多两位数的十进制数。