首页 > 解决方案 > 创建一个 MATLAB 函数来确定客户在购买后应支付的零钱金额

问题描述

我在 MATLAB 中创建了一个函数,当输入物品的成本和给该物品的金额时,它会显示应付的找零金额(GB 货币)。

function C = myChange(cost, paid) 
M = [50, 20, 10, 5, 2, 1, 0.5, 0.2, 0.1, 0.05, 0.02, 0.01]; 
C = []; 
for i = 1:size(M,2) 
    if (paid - cost) >= M(i) 
        C = [M(i); myChange(cost, paid-M(i))]; 
        break 
    elseif (paid - cost) == 0 
        break 
    end 
end 
end 

当使用整数时,该函数似乎工作得很好,

>> myChange(2, 4)

ans =

     2

>> myChange(20, 32)

ans =

    10
     2

然而,有时,但不是所有时候,当输入中包含小数点时,变化量会少一美分(美分)

 >> myChange(2, 3.25)

ans =

    1.0000
    0.2000
    0.0200
    0.0200

但是,在这种情况下,会再次显示正确的更改

>> myChange(27.57, 100) 

ans =

   50.0000
   20.0000
    2.0000
    0.2000
    0.2000
    0.0200
    0.0100

我不确定是什么导致了这种不一致,我已经玩了一段时间的功能,但现在无济于事。非常感谢任何帮助,谢谢。

标签: matlabif-statement

解决方案


推荐阅读