Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people, just like you, are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
Solved

Strange calculation result in CLIPPER 5

Posted on 1998-10-15
2
246 Views
Last Modified: 2010-04-26
I am using CLIPPER version 5. The following comparasion never equal on a specific condition.

IF Tot1+Tot2+Tot3+Tot4+Tot5 = User_Fonc()
   Process....
 
User_Fonc is a function who add number inputed from the screen, the result is return  at end of the function
RETURN Result     (Numeric value 9999.99)

The problem is if all Tot... = 200.00

and the result of the function were 5 input of 33.33 plus
a last input of 33.35  (total should be 200.00)

The IF condition never satisfied because the function does not give the same answer as the addition of Tot...

Using debug the sum of the Tot.. field = 200.00 and the number out of the function is 200.00.

Why CLIPPER 5 find the two number not equal?

It is working find for any other combinasion of number.
(use 5 X  33.34 and 1 X 33.30 it will work)

Thanks
PS: Old language but this bug just came out recently.

Jacques Theroux
0
Comment
Question by:theroux
2 Comments
 
LVL 12

Accepted Solution

by:
mark2150 earned 200 total points
ID: 1011497
You should *NEVER* test for equality with REAL #'s. There is almost always "roundoff lint" that you don't see. If your value is, say, 33.33000000000001 and your format mask is ##.## then it will display as 33.33 but is *NOT* internally.

This is *NOT* "bug". Make sure your values really end at two places like:

X = INT( X * 100 ) /100

Either that or range your test:

sum = (Tot1+Tot2+Tot3+Tot4+Tot5)

if (sum > 200.00) and (sum < 200.01) then...

Either method will work.

M

0
 

Author Comment

by:theroux
ID: 1011498
I note MARK2150 average and give 150 point because he made the effort to response to this question but  the answer was not realy good. I try the same situation using NATURAL CICS, COBOL MVS, ASSEMBLER and the result was find every time.  I did not try FORTRAN, FOCUS, BASIC/VISUAL BASIC, I did not have time to try those language.

I used the get around to bypass the bug  but MARK 2150 had a mistake on his IF statement, it should read ">=". MARK2150 should not make affirmation like  he did with NEVER all over the answer. I was more interested to find if a new version of CLIPPER is out and may be solved the problem.

Thanks
Jacques Théroux
     
0

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

this article is a guided solution for most of the common server issues in server hardware tasks we are facing in our routine job works. the topics in the following article covered are, 1) dell hardware raidlevel (Perc) 2) adding HDD 3) how t…
Stuck in voice control mode on your Amazon Firestick?  Here is how to turn it off!!!
Two types of users will appreciate AOMEI Backupper Pro: 1 - Those with PCIe drives (and haven't found cloning software that works on them). 2 - Those who want a fast clone of their boot drive (no re-boots needed) and it can clone your drive wh…
I've attached the XLSM Excel spreadsheet I used in the video and also text files containing the macros used below. https://filedb.experts-exchange.com/incoming/2017/03_w12/1151775/Permutations.txt https://filedb.experts-exchange.com/incoming/201…

828 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question