Re: This calculation is just wrong / computer can't count!



I don't recall saying "double is perfect". I have known for decades that it is not. What
I said was that the representation was precise and accurate.

In fact, manipulating the answers is required and mandatory if you want to preserve an
illusion.
joe

On Thu, 11 Oct 2007 17:12:09 +0100, "GT" <ContactGT_remove_@xxxxxxxxxxx> wrote:

"Joseph M. Newcomer" <newcomer@xxxxxxxxxxxx> wrote in message
news:iofsg3dl0v05vfkm7pg5dh8k07u42ivhqs@xxxxxxxxxx
Here is your original message

I have been debugging something for ages now. I have a method that does
some
complex maths, but right at the beginning it works out a proportion and a
few ratios and the maths is simply wrong. In my code I (obviously) use
variables and the values vary each time the method is called, but there
seems to a problem with the maths. I have narrowed the problem down to the
following. Can someone else please try this simply calculation and see
what
their computer gets.

Code Line 1:
double effortChangeProportion = (55.0 - 30.0) / 30.0;


This first line does 55-30 and divides the result by 30. In other words
25/30, which is 0.8333 (recurring 3s).

The computer manages to give the answer 0.83333333333333337 !!

Code Line 2:
effortChangeProportion++;

or

effortChangeProportion = effortChangeProportion + 1.0;

The second line of code (both alternatives give the same result) builds on
the first by simply adding 1 (so I can then multiply other numbers by this
proportion).

In this case 0.8333 becomes 1.8333 , but again the computer gets this
wrong.
It tries to add 1 to 0.83333333333333337 and gets 1.8333333333333335.

Obviously this can easily be done in 1 line of code, but it is broken down
to demonstrate the maths going wrong twice!

Can anyone shed some light on this for me please?

GT

I see only one question: "Can anyone shed some light on this for me
please?"

And light was indeed shed immediately with an explanation of binary to
decimal conversion, which we should have spotted ourselves, but had 'one of
those moments'! So the thread moved on from the original question very
quickly to, "well how can I get around this then and avoid manipulating any
answers". This was then also answered, then you jumped in with, "wrong
question", "double is perfect" etc etc - nothing to do with the question or
thread. If you can't contribute, then *** out.

Joseph M. Newcomer [MVP]
email: newcomer@xxxxxxxxxxxx
Web: http://www.flounder.com
MVP Tips: http://www.flounder.com/mvp_tips.htm
.