Drexel dragonThe Math ForumDonate to the Math Forum



Search All of the Math Forum:

Views expressed in these public forums are not endorsed by Drexel University or The Math Forum.


Math Forum » Discussions » Software » comp.soft-sys.matlab

Topic: How to avoid wrong answers in simple arithmetic expressions.
Replies: 13   Last Post: Jan 20, 2013 7:18 AM

Advanced Search

Back to Topic List Back to Topic List Jump to Tree View Jump to Tree View   Messages: [ Previous | Next ]
S.K.Mody

Posts: 31
Registered: 12/13/04
How to avoid wrong answers in simple arithmetic expressions.
Posted: Jan 19, 2013 2:04 AM
  Click to see the message monospaced in plain text Plain Text   Click to reply to this topic Reply

I tried the following cody problem for fun:
[quot]
Given an amount of currency, return a vector of this form:

[100 50 20 10 5 2 1 0.5 0.25 0.1 0.05 0.01]

Example:

Input a = 257.68
Output b is [2 1 0 0 1 1 0 1 0 1 1 3]

Always use bigger bills/coins if possible.
[/quot]

My solution:
function b = makingChange(a)
v = [100 50 20 10 5 2 1 0.5 0.25 0.1 0.05 0.01];
for i = 1 : length(v)
b(i) = floor(a/v(i));
a = a - b(i)*v(i);
end
end

But, due to rounding error, this gives a wrong answer for example for a = 135.01.
The problem does not go away even if I replace the last line by a = rem(a, v(i)).
How does one avoid such issues in general?



Point your RSS reader here for a feed of the latest messages in this topic.

[Privacy Policy] [Terms of Use]

© Drexel University 1994-2014. All Rights Reserved.
The Math Forum is a research and educational enterprise of the Drexel University School of Education.