哇哇哇哇哇哇哇哇哇哇哇哇哇哇哇
此外,“圆形(x,n)”给出错误 - 几乎就像它不可能有2nd参数
伟大的问题,不是太难,但需要有点思考
我花了很长时间(在阅读评论之前!!!)弄清楚,例如REM(135.01,100)的结果不是35.01但是35.00999999999999。
任何人都可以帮助我解决这个问题的原因以及如何解决它(不是通过添加1E-3)!?
做得好!我喜欢解决这个代码
我无法理解这个问题。什么意思?
为什么功能循环未定义?
功能b = makechange(a)
CU = [10000,200,2000,1000,2500,200,100,50,25,10,5,1];
b = [];
m = a * 100;
对于i = 1:11
b(i)=地板(m / cu(i));
m = m-b(i)* cu(i);
结尾
b(12)= m;
结尾
嗯,为了通过问题,你需要ad 0.001到a
由于浮点算术,矢量B的最后一个精灵可能与右答案不同(通常比它小)。所以我最后加入1E-4来修补它。
我使用此代码获得正确的答案....
---
功能b = makechange(a)
变化= [100 50 20 10 5 2 1 0.5 0.25 0.1 0.05 0.01];
对于i = 1 :(长度(变化)-1)
b(i)=楼层(A / Change(i));
a = a - b(i)*改变(i);
结尾
B(12)= A /变化(12);
结尾
---
但它告诉我,我让他们错了。不确定为什么。
乔,我认为你有一个浮点圆角错误。我有同样的问题,令人沮丧。如果您查看B(12)的值以及它输出的值,则输出0.99999。虽然我们知道这是正确的计算机没有。如果你只是在循环结束时添加一些东西或在b(12)= rounce(a / change(12),2)时,这将把它绕到最接近的整数,并且应该让您答案您寻找。
这里的真正挑战是例如使用圆形或地板时具有数值前导的问题。我不认为这是有意的。这里的“修复”从其他评论中取出了此解决方案(即添加1E-6输入A)
我不得不添加“圆”功能,因为由于我的MATLAB既有原因,那么这是135.01-100 = 35.0099999999。不确定为什么。
需要1E-3,因为存在MATLAB错误,这使得最后一个“A”略微(1E-15)小于0.01
不是matlab错误,一个内在的问题在二进制系统上表示小数。
我挣扎着浮点问题,所以这是我可以提出的最好的解决方案。
具有数值精确问题...因此SQRT(EPS)。
对我来说,很难在最后的rouding errow中制作好的代码。
好问题。
我通过加1e-6消除了舍入误差。
您还可以将原始金额和面额乘以100.欢呼声。